我正在尝试通过 XMLHttpRequest 上传文件。我使用以下语句创建一个input
with type
set to并获取文件数据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);
这不起作用!我无法使用 的upload
功能,dojox.form.Uploader
因为我需要在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 文件上传器将文件发送到服务器的正确方法吗?有什么想法可以做到吗?