0

I am trying to upload more than 7mb sized image which throwing before hit the server side action method '500 Internal Server Error' where below 7mb images are easily get uploaded.

below I am Serializing the file in angular to Base64 string.

$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];
}

and storing all values in one object for sending to server side class object as below

$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;

now sending to server side like below

$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
    }
});

at backend I created one object class file and getting values in action method like below

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
}

I have updated the web.config file by below code

<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>

but still getting same issue, no change

abbas arman
  • 145
  • 1
  • 13
  • 1
    Does this answer your question? [How to set the maxAllowedContentLength to 500MB while running on IIS7?](https://stackoverflow.com/questions/4022434/how-to-set-the-maxallowedcontentlength-to-500mb-while-running-on-iis7) – GSerg May 29 '21 at 14:36
  • I tried those too, but still getting same issue, I mentioned in last. – abbas arman May 29 '21 at 14:40
  • You seem to have missed that one value must be in bytes and the other in kilobytes. – GSerg May 29 '21 at 14:43
  • would you elaborate it where I have to update that? – abbas arman May 29 '21 at 15:06

1 Answers1

1

in web.config one more line to add in <appSettings>

<add key="aspnet:MaxJasonDeserializerMembers" value="86753090"/>

and followed by this

https://stackoverflow.com/a/41575205/4728451

abbas arman
  • 145
  • 1
  • 13