使用dojox.form.Uploader和FormData上传文件

3

我正在尝试通过XMLHttpRequest上传文件。我创建了一个input,将type设置为file,并使用以下语句获取文件数据:

var files = document.getElementById("fileInput").files;
var file = files[0];
var formData = new FormData();
formData.append("fileInput", file);
.
.
.
xhr.send(formData);

这个可以用!但是当使用 dojox.form.Uploader 时,我会写出这样的代码:

var files = dijit.byId("dojoFileInput").getFileList();
var file = files[0];
var formData = new FormData();
formData.append("dojoFileInput", file);
.
.
.
xhr.send(formData);

这并不起作用!我无法使用dojox.form.Uploaderupload函数,因为我需要在FormData对象中发送一些额外的数据。我正在使用以下语句创建dojo文件上传器:

<div dojoType="dojox.form.Uploader" label="Select files..." id="dojoFileInput"></div>

我尝试使用以下语句在控制台中打印文件数据:
console.log(document.getElementById("fileInput").files[0]); // Normal file input
var files = dijit.byId("dojoFileInput").getFileList(); // Dojo file input
console.log(files[0]);

普通的文件输入会产生以下输出(实际上,在每个部分下面有比这更多的信息,但这里进行了压缩):
File {webkitRelativePath: "", lastModifiedDate: Sat Nov 10 2012 19:42:45 GMT+0530 (India Standard Time), name: "<FILE NAME>", type: "image/png", size: 115661}
    lastModifiedDate: Sat Nov 10 2012 19:42:45 GMT+0530 (India Standard Time)
        __proto__: Invalid Date
        name: "<FILE NAME>"
        size: 115661
        type: "image/png"
        webkitRelativePath: ""
    __proto__: File
        constructor: function File() { [native code] }
        arguments: null
        caller: null
        length: 0
        name: "File"
        prototype: File
        toString: function toString() { [native code] }
        __proto__: Object
        <function scope>
    __proto__: Blob
        constructor: function Blob() { [native code] }
        slice: function slice() { [native code] }
        webkitSlice: function webkitSlice() { [native code] }
        __proto__: Object

但是Dojo文件上传程序只提供单行输出:
Object {index: 0, name: "<FILE NAME>", size: 115661, type: "image/png"}

Dojo是否不提供可以发送到服务器的完整文件详细信息?这是使用Dojo文件上传程序将文件发送到服务器的正确方法吗?有什么想法可以完成此操作吗?

1个回答

1

Uploader有一个提交方法,可以让您添加帖子数据。


嗨@mwillcox,提交之前有什么方法可以用来确保上传文件在通过上传之前满足某些条件吗?我在Google Chrome中收到“失败:连接重置”的消息(这是由于目录权限引起的)。_HTML5.js和ProgressEvent返回异常,但没有任何有用的信息。 - pcproff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接