我正在尝试使用dojo / _base / xhr上传文件 这是代码:
xhr.post({
url: postUrl,
handleAs: "text",
contentType: "application/json",
timeout: 10000,
postData: dojo.toJson({ file: Uploader.files[0]}),
load: function (result) {
show image...
},
error: function (err) {
show error...
}
});
当我尝试发送Uploader.files[0].size
时,我会得到我应该得到的值,但是当我尝试发送Uploader.files[0]
或Uploader.files[0]
时,我会得到空。
在服务器端:
[HttpPost]
public string UploadImg(string file)
{
` Saving file
}
我尝试了一切!!但我无法设法获取文件本身。 Request.Files
返回0个文件。提交表格不是一种选择,当我使用
xhr.post({
form: dom.byId("myform"),
handleAs: "text",
timeout: 10000,
load: function (result) {
show image...
},
error: function (err) {
show error...
}
Request.Files
返回0
答案 0 :(得分:1)
ajax不是crossbrowser文件异步上传的可行选项。你应该尝试使用该模块:
http://dojotoolkit.org/reference-guide/1.8/dojo/request/iframe.html
http://dojotoolkit.org/reference-guide/1.9/dojo/request/iframe.html
并让他们将您的表单提交给隐藏的iframe。
iframe(postUrl,{
form: "theForm",
handleAs: "text"
}).then(function(data){
show image...
},function(err){
show error...
});
请记住,如果您需要对返回的数据执行某些操作(并且不是html [就像在您的文本案例中那样]),您需要为响应执行此操作:
<html>
<body>
<textarea>
data
</textarea>
</body>
</html>
答案 1 :(得分:0)
您可以尝试使用HttpPostedFileBase:
[HttpPost]
public string UploadImg(HttpPostedFileBase file) {
//Save the file :
if (file != null && file.ContentLength > 0) {
file.SaveAs(path);
}
}
请参阅this StackOverflow answer和this article
您也可以尝试删除dojo.toJson:
postData: { file: Uploader.files[0]}
而不是:
postData: dojo.toJson({ file: Uploader.files[0]})