我有一个网络表单,用户在一个和两个文件之间上传。每个文件都可以通过文件输入或通过将文本粘贴到文本框中来提供。
如何将输入标准化,以便以相同的方式将其发送到服务器,而不管用于输入的方法是什么?我想总是向服务器发送一种类型的数据,带有文件的多部分请求或带有文件字符串的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
回调,但我不知道怎么做,能够像这样返回文件串。
答案 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]);
}
然后我在需要时就回复了读者的内容。它不是一个完美的解决方案,但它确实有效。