我试图发送一个大小的javascript blob" 4682933"并输入" image / png"它是从Base64String转换而来的。我无法在服务器上检索任何内容。 FormCollection对象始终为null。
这是我向服务器发出客户端请求的代码:
var formData = new FormData();
formData.append("data", Blobx);
var request = new XMLHttpRequest();
request.open('POST', '/Patient/pdfSavefile');
request.send(formData);
这是我的控制器代码,用于检索文件。
public bool pdfSavefile(FormCollection formdata)
{
var data = formdata["data"];
}
我的webconfig文件中有以下内容
<httpRuntime targetFramework="4.6.2" maxRequestLength="1048576" requestValidationMode="2.0" executionTimeout="10000" />
我已经尝试了一切,没有什么可行的。
我将Base64String转换为Blob的代码
function base64ToBlob(base64, mime)
{
mime = mime || '';
var sliceSize = 1024;
var byteChars = window.atob(base64);
var byteArrays = [];
for (var offset = 0, len = byteChars.length; offset < len; offset += sliceSize) {
var slice = byteChars.slice(offset, offset + sliceSize);
var byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
return new Blob(byteArrays, {type: mime});
}
答案 0 :(得分:0)
我几乎从不使用FormCollection
,但如果内存服务,它只接受字符串键值对。任何发布的文件都可以在Request.Files
集合中找到,或者需要作为HttpPostedFileBase
参数单独处理。例如,如果您要发布的所有内容都是此文件,那么您需要做的就是将操作签名更改为:
public bool pdfSavefile(HttpPostedFileBase data)
如果您确实有其他表单字段要发布,我建议您创建一个视图模型,而不是依赖FormCollection
。 MVC模型绑定器是MVC的主要优点之一,你几乎完全使用FormCollection
抛弃它。