我的 Web 应用程序通过将 JSON 数据发布到某些 URL(不使用 html 表单)与服务器端(ASP.NET MVC 3)进行交互。
如何将文件发布到服务器并将其绑定到HttpPostedFileBase
使用 JSON 而不使用多部分表单?
谢谢!
我的 Web 应用程序通过将 JSON 数据发布到某些 URL(不使用 html 表单)与服务器端(ASP.NET MVC 3)进行交互。
如何将文件发布到服务器并将其绑定到HttpPostedFileBase
使用 JSON 而不使用多部分表单?
谢谢!
我已经这样做了,但没有使用HttpPostedFileBase
从 MVC 应用程序获取内容。我只是使用 JSON。
您可以简单地使用FileReader.onload
(在 HTML5 上)方法来提取文件内容并作为 Base64 字符串直接发布到 MVC 控制器。是#upload-button
一个<input type=file ...>
标签。
var file = $('#upload-button')[0].files[0];
var reader = new FileReader();
reader.onload = (function (f) {
return function (e) {
if (e.target.readyState == FileReader.DONE) {
$.ajax("FileStore/SavePicture", {
data: { content: e.target.result, name: f.name },
type: "post",
contentType: "application/json"
});
}
};
})(file)
从那里您可以使用Convert.FromBase64String
方法转换为byte[]
. 这就是 Action 内容的样子;
string base64String = content;
// Get the starting point of the actual content from the base64String.
int start = base64String.IndexOf(",") + 1;
int length = base64String.Length - start;
contentAsString = base64String.Substring(start, length);
byte[] dataAsBytes = Convert.FromBase64String(contentAsString);
可能还有其他一些方法可以做到这一点。
可以,但是你会遇到跨浏览器的问题,更多细节可以在这里找到:如何使用 jQuery 异步上传文件?或者只是谷歌“ajax文件上传”