我正在编写一个应用程序的一部分,它允许文件被拖放,并通过 ajax 上传到 Web 服务器。
这是我将文件上传到 WCF Web 服务的 jQuery 代码片段:
var fileData = JSON.stringify({
filename: file.name,
contentType: file.type,
data: e.target.result
});
$.ajax({
cache: false,
url: "/site/app.svc/GetFile",
type: "POST",
dataType: "json",
data: fileData,
contentType: "application/json; charset=utf-8",
processData: false
});
这是我的 WCF Web 服务代码片段,它获取文件数据并保存它:
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
public bool GetFile(string filename, string contentType, string data)
{
try
{
var tokens = data.Split(',');
File.WriteAllBytes("C:\\" + filename, System.Convert.FromBase64String(tokens[1]));
}
catch
{
return false;
}
return true;
}
这适用于小文件,但是当我达到 80Kb 左右时...它失败并显示消息
413请求实体太大
......有时
500内部服务器错误
关于它在达到特定大小限制时为什么会失败的任何想法?这是对 ajax 帖子大小的限制,还是更可能是 WCF 服务限制了可以发送和不能发送的内容?