在上传 Base64 字符串中超过 7MB 的图像时如何防止 500(内部服务器错误)
How to prevent from 500 (Internal Server Error) while uploading the more than 7MB image in Base64 string
我正在尝试上传超过 7mb 大小的图像,该图像在命中服务器端操作方法“500 内部服务器错误”之前抛出,其中很容易上传低于 7mb 的图像。
下面我将 angular 中的文件序列化为 Base64 字符串。
$scope.UploadSysFiles = function (event){
var file = event.target.files;
var reader = new FileReader();
reader.readAsDataURL(file[0]);
reader.onload = () => {
$scope.SysFileByteCode = reader.result;
};
$scope.SysFiles = file[0];
}
并将所有值存储在一个对象中以发送到服务器端class对象如下
$scope.SystemAccesories[rowIndex] = {};
$scope.SystemAccesories[rowIndex].ManualFile = $scope.SysFileByteCode;
$scope.SystemAccesories[rowIndex].FileName = $scope.SysFiles.name;
$scope.SystemAccesories[rowIndex].FileSize = $scope.SysFiles.size;
$scope.SystemAccesories[rowIndex].ContentType = $scope.SysFiles.type;
$scope.SystemAccesories[rowIndex].IsManualFileAvailable = true;
现在像下面这样发送到服务器端
$http({
method: 'POST',
url: 'http://localhost:*****/Accesories/UpdateAccesories',
data: { objSystemAccesories: $scope.SystemAccesories},
headers: { 'content-type': 'application/json' }
}).then(function (response) {
//after get success, further steps
}
});
在后端我创建了一个对象 class 文件并在如下操作方法中获取值
public class SystemAccessories
{
public string ManualFile { get; set; }
public string FileName { get; set; }
public string FileSize { get; set; }
public string ContentType { get; set; }
public Nullable<bool> IsManualFileAvailable{ get; set; }
}
[HttpPost]
public ActionResult UpdateAccesories(SystemAccesories objSystemAccesories)
{
//deserialize to byte array annd upload code
}
我已经通过以下代码更新了 web.config
文件
<system.web>
<httpRuntime targetFramework="4.6.1" maxRequestLength="2147483647" executionTimeout="3600" requestLengthDiskThreshold="2147483647"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647"></requestLimits>
</requestFiltering>
</security>
</system.webServer>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
但仍然遇到同样的问题,没有变化
在web.config
中再添加一行<appSettings>
<add key="aspnet:MaxJasonDeserializerMembers" value="86753090"/>
然后是这个
我正在尝试上传超过 7mb 大小的图像,该图像在命中服务器端操作方法“500 内部服务器错误”之前抛出,其中很容易上传低于 7mb 的图像。
下面我将 angular 中的文件序列化为 Base64 字符串。
$scope.UploadSysFiles = function (event){
var file = event.target.files;
var reader = new FileReader();
reader.readAsDataURL(file[0]);
reader.onload = () => {
$scope.SysFileByteCode = reader.result;
};
$scope.SysFiles = file[0];
}
并将所有值存储在一个对象中以发送到服务器端class对象如下
$scope.SystemAccesories[rowIndex] = {};
$scope.SystemAccesories[rowIndex].ManualFile = $scope.SysFileByteCode;
$scope.SystemAccesories[rowIndex].FileName = $scope.SysFiles.name;
$scope.SystemAccesories[rowIndex].FileSize = $scope.SysFiles.size;
$scope.SystemAccesories[rowIndex].ContentType = $scope.SysFiles.type;
$scope.SystemAccesories[rowIndex].IsManualFileAvailable = true;
现在像下面这样发送到服务器端
$http({
method: 'POST',
url: 'http://localhost:*****/Accesories/UpdateAccesories',
data: { objSystemAccesories: $scope.SystemAccesories},
headers: { 'content-type': 'application/json' }
}).then(function (response) {
//after get success, further steps
}
});
在后端我创建了一个对象 class 文件并在如下操作方法中获取值
public class SystemAccessories
{
public string ManualFile { get; set; }
public string FileName { get; set; }
public string FileSize { get; set; }
public string ContentType { get; set; }
public Nullable<bool> IsManualFileAvailable{ get; set; }
}
[HttpPost]
public ActionResult UpdateAccesories(SystemAccesories objSystemAccesories)
{
//deserialize to byte array annd upload code
}
我已经通过以下代码更新了 web.config
文件
<system.web>
<httpRuntime targetFramework="4.6.1" maxRequestLength="2147483647" executionTimeout="3600" requestLengthDiskThreshold="2147483647"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647"></requestLimits>
</requestFiltering>
</security>
</system.webServer>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000"/>
</webServices>
</scripting>
</system.web.extensions>
但仍然遇到同样的问题,没有变化
在web.config
中再添加一行<appSettings>
<add key="aspnet:MaxJasonDeserializerMembers" value="86753090"/>
然后是这个