第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在各種瀏覽器中在javascript中讀取客戶端的文件內容

在各種瀏覽器中在javascript中讀取客戶端的文件內容

慕碼人8056858 2019-07-10 15:59:37
在各種瀏覽器中在javascript中讀取客戶端的文件內容我試圖提供一個只使用腳本的解決方案,用于通過瀏覽器讀取客戶端計算機上文件的內容。我有一個適用于Firefox和InternetExplorer的解決方案。不是很漂亮,但我現(xiàn)在只是在嘗試:function getFileContents() {     var fileForUpload = document.forms[0].fileForUpload;     var fileName = fileForUpload.value;     if (fileForUpload.files) {         var fileContents = fileForUpload.files.item(0).getAsBinary();         document.forms[0].fileContents.innerHTML = fileContents;     } else {         // try the IE method         var fileContents = ieReadFile(fileName);         document.forms[0].fileContents.innerHTML = fileContents;     }}       function ieReadFile(filename) {     try     {         var fso  = new ActiveXObject("Scripting.FileSystemObject");          var fh = fso.OpenTextFile(filename, 1);          var contents = fh.ReadAll();          fh.Close();         return contents;     }     catch (Exception)     {         return "Cannot open file :(";     }}我可以打電話getFileContents()它將把內容寫入fileContents文字區(qū)。在其他瀏覽器中有辦法做到這一點嗎?目前我最關心的是Safari和Chrome,但我對其他瀏覽器的建議持開放態(tài)度。編輯:在回答這個問題時,“你為什么要這么做?”:基本上,我希望將文件內容與客戶端的一次性密碼一起散列,這樣我就可以將這些信息作為驗證發(fā)送回來。
查看完整描述

3 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

編輯以添加有關文件API的信息

因為我最初寫了這個答案,文件API已經被提議作為一種標準在大多數(shù)瀏覽器中實現(xiàn)(從IE 10開始,它增加了對FileReader這里描述的API,雖然還沒有FileAPI)。這個API比以前的MozillaAPI要復雜一些,因為它是為了支持異步讀取文件、更好地支持二進制文件和不同文本編碼的解碼而設計的。的確有有關Mozilla開發(fā)人員網(wǎng)絡的一些文檔以及網(wǎng)上的各種例子。您將按以下方式使用它:

var file = document.getElementById("fileForUpload").files[0];if (file) {
    var reader = new FileReader();
    reader.readAsText(file, "UTF-8");
    reader.onload = function (evt) {
        document.getElementById("fileContents").innerHTML = evt.target.result;
    }
    reader.onerror = function (evt) {
        document.getElementById("fileContents").innerHTML = "error reading file";
    }}

原始答案

在WebKit中似乎沒有這樣的方法(例如Safari和Chrome)。唯一的鑰匙檔案對象有fileNamefileSize..根據(jù)提交消息對于File和FileList支持,它們的靈感來自Mozilla的File對象,但它們似乎只支持這些特性的一個子集。

如果你想改變這一點,你可以永遠發(fā)送補丁WebKit項目。另一種可能是提議將Mozilla api包含在HTML 5;WHATWG郵件列表可能是最好的地方。如果你這樣做的話,那么至少在幾年后,就會有一種跨瀏覽器的方式來做到這一點。當然,向HTML 5提交一個補丁或包含它的建議確實意味著要為這個想法辯護,但是Firefox已經實現(xiàn)了這個概念,這給了你一些開始的機會。


查看完整回答
反對 回復 2019-07-10
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

為了讀取用戶選擇的文件,使用文件打開對話框,可以使用<input type="file">標簽。你可以找到來自MSDN的有關信息..選擇文件時,可以使用FileReader API閱讀內容。


function onFileLoad(elementId, event) {

    document.getElementById(elementId).innerText = event.target.result;

}


function onChooseFile(event, onLoadFileHandler) {

    if (typeof window.FileReader !== 'function')

        throw ("The file API isn't supported on this browser.");

    let input = event.target;

    if (!input)

        throw ("The browser does not properly implement the event object");

    if (!input.files)

        throw ("This browser does not support the `files` property of the file input.");

    if (!input.files[0])

        return undefined;

    let file = input.files[0];

    let fr = new FileReader();

    fr.onload = onLoadFileHandler;

    fr.readAsText(file);

}

<input type='file' onchange='onChooseFile(event, onFileLoad.bind(this, "contents"))' />

<p id="contents"></p>


查看完整回答
反對 回復 2019-07-10
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

編碼愉快!
如果在InternetExplorer上出現(xiàn)錯誤,請更改安全設置以允許ActiveX

var CallBackFunction = function(content){
    alert(content);}ReadFileAllBrowsers(document.getElementById("file_upload"), CallBackFunction);
     //Tested in Mozilla Firefox browser, Chromefunction ReadFileAllBrowsers(FileElement, CallBackFunction){try{
    var file = FileElement.files[0];
    var contents_ = "";

     if (file) {
        var reader = new FileReader();
        reader.readAsText(file, "UTF-8");
        reader.onload = function(evt)
        {
            CallBackFunction(evt.target.result);
        }
        reader.onerror = function (evt) {
            alert("Error reading file");
        }
    }}catch (Exception)
 {
    var fall_back =  ieReadFile(FileElement.value);
    if(fall_back != false)
    {
        CallBackFunction(fall_back);
    }
 }}///Reading files with Internet Explorerfunction ieReadFile(filename){
 try
 {
    var fso  = new ActiveXObject("Scripting.FileSystemObject");
    var fh = fso.OpenTextFile(filename, 1);
    var contents = fh.ReadAll();
    fh.Close();
    return contents;
 }
 catch (Exception)
  {
    alert(Exception);
    return false;
  }
 }


查看完整回答
反對 回復 2019-07-10
  • 3 回答
  • 0 關注
  • 1309 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號