使用javascript编辑上传的文件客户端

时间:2014-10-03 10:24:45

标签: javascript

我正在开发一个用户必须上传文件的Web应用程序。 在将其发送到服务器之前,我需要在客户端修改该文件。

以下是加载文件的代码:

var reader = new FileReader();
reader.onload = function(file) {
    var arrayBuffer = reader.result;
    byteArray = new Uint8Array(arrayBuffer);
    //modify byteArray
    //replace the file data with the modified byteArray
}
reader.readAsArrayBuffer(file);

是否可以用修改后的byteArray替换文件数据?

1 个答案:

答案 0 :(得分:2)

您无法更改File对象,因为它代表用户本地文件系统上的文件。但是,您可以从修改后的数组缓冲区中创建新的Blob

var uploadBlob = new Blob(arrayBuffer);

然后只需使用FormData上传此uploadBlob代替原始File对象:

var uploadData = new FormData(),
    request = null;

upload.append('fileData', uploadBlob);

request = new XMLHttpRequest();
request.open("POST", "http://yourURL.com");
request.send(formData);

(显然,请记住添加任何需要的处理程序来处理您的请求和响应。)

唯一的问题是浏览器支持(基本上是IE10 +):

http://caniuse.com/#feat=xhr2

http://caniuse.com/#feat=blobbuilder