我尝试使用ajax将数据发送到c#方法。我从input type=file
var inp = document.getElementById('file');
var data = new FormData();
for (var i = 0; i < inp.files.length; ++i) {
var somefile = inp.files.item(i);
//for is for later not have function right now!
}
$.ajax({
url: "Main/Upload",
type: "GET",
data: {"file":somefile},
});
我写了c#方法:
public void Upload(HttpPostedFileWrapper file)
{
ModelState.Clear();
if (file != null)
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var saveLocation = Path.Combine(Server.MapPath("~/tmp"), fileName);
file.SaveAs(saveLocation);
}
}
}
我不确定HttpPostedFileWrapper
是否正确,但我尝试...使用[httpost]是个问题,因为水獭问题。
现在ajax呼叫不会调用上传。
我收到错误NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: Illegal operation on WrappedNative prototype object
。
我尝试在somefile中调试,我得到文件大小,名称,类型等。
我需要从输入中获取文件而不提交,我这样做,那部分工作,现在我只需要save file in save folder
,也许我只能用jquery。
答案 0 :(得分:1)
是的,你的ajax代码是错误的。
上述代码可以改写为
var inp = document.getElementById('file');
var data = new FormData();
data.append("fileInfo", inp);
/*
for (var i = 0; i < inp.files.length; ++i) {
var somefile = inp.files.item(i);
//for is for later not have function right now!
}*/
$.ajax({
url: "Main/Upload",
type: "POST",
data: data,
success : function (data) {
console.log("SUCCESS : ", data);
},
error : function () {
console.log("ERROR");
}
});