使用粘贴的字符串或文件上传

时间:2016-10-12 05:52:59

标签: javascript forms file web

我有一个网络表单,用户在一个和两个文件之间上传。每个文件都可以通过文件输入或通过将文本粘贴到文本框中来提供。

如何将输入标准化,以便以相同的方式将其发送到服务器,而不管用于输入的方法是什么?我想总是向服务器发送一种类型的数据,带有文件的多部分请求或带有文件字符串的JSON请求。怎么样?

现在,我正在尝试使用FileReader读取文件,但我对处理异步读取感到困惑。

function getPrimaryFileString() {
    if(pasted()) {
        return document.getElementById("pastedPrimaryInputFile").value;
    } else {
        var reader = new FileReader();
        var file = document.getElementById("primaryInputFile").files[0];
        reader.readAsText(file);

        filestring = reader.contents;

        return filestring;
    }
}

我知道我应该有一个onload回调,但我不知道怎么做,能够像这样返回文件串。

1 个答案:

答案 0 :(得分:0)

所以,对于其他任何挣扎于此的人,我找到了解决方案。我为每个文件输入添加了一个onchange方法,如下所示。

 <input type="file" 
        id="primaryInputFile" 
        name="primaryInputFile" 
        size="10"
        onchange="mainFileChanged()" />

该函数告诉全局声明的FileReader读取更新后的值。

function mainFileChanged() {
    console.log("Main file change recorded");
    mainFileInput.readAsText(document.getElementById('primaryInputFile').files[0]);
}

然后我在需要时就回复了读者的内容。它不是一个完美的解决方案,但它确实有效。