C# 使用REST上载文件时文件数据为空
我有以下代码C# 使用REST上载文件时文件数据为空,c#,asp.net-mvc,jquery,rest,file-upload,C#,Asp.net Mvc,Jquery,Rest,File Upload,我有以下代码 self.upload = function (file) { var path = $('#fileUpload').val(); var fr= new FileReader(); var ID = JSON.stringify({ ID:23, Name: file.name, Type: file.type,
self.upload = function (file) {
var path = $('#fileUpload').val();
var fr= new FileReader();
var ID = JSON.stringify({
ID:23,
Name: file.name,
Type: file.type,
Size: file.size,
Path: path,
data:fr.readAsDataURL(file),
});
$.ajax({
cache: false,
url: "http://localhost:49589/api/files",
type: "POST",
dataType: "json",
data: ID,
contentType: "application/json; charset=utf-8",
processData: false,
success: function (json) {
alert("Data Returned: " + JSON.stringify(json));
},
error: function (json) {
alert("error" + JSON.stringify(json));
}
});
我正在执行文件上传。我的控制器是
[HttpPost]
public string upload(filesUpload f)
{
byte[] jj = f.data; // **getting null here**
string givenId = f.Path;
return givenId;
}
当我执行这个并上传一个文件时,我得到的是空文件数据。其中filesUpload是我的型号
我的代码出了什么问题。我正在为viwe和drundal SPA框架使用Knockout.js
还有别的办法吗。请帮助我以异步方式读取文件,并且不返回任何内容。您应该首先开始读取文件,然后捕获fr.onload事件,然后从这里创建json对象并调用ajax upd:代码如下所示:
self.upload = function (file) {
var path = $('#fileUpload').val();
var fr= new FileReader();
fr.onload = function (frEvent) {
var ID = JSON.stringify({
ID:23,
Name: file.name,
Type: file.type,
Size: file.size,
Path: path,
data:frEvent.target.result,
});
$.ajax({
cache: false,
url: "http://localhost:49589/api/files",
type: "POST",
dataType: "json",
data: ID,
contentType: "application/json; charset=utf-8",
processData: false,
success: function (json) {
alert("Data Returned: " + JSON.stringify(json));
},
error: function (json) {
alert("error" + JSON.stringify(json));
}
});
};
fr.readAsDataURL(file);
};
data:fr.readAsDataURL(文件),
有额外的逗号,可能会有问题