我用asp.net Core编写了一个文件上传函数,并用Angular httpclient调用该函数但问题是服务器端的文件大小更大,当保存时,文件会损坏
例如,大小为43 KB的图像文件在服务器端变为79 KB
可以说文件的大小是的两倍
并且大于30 MB的文件没有这个问题
api
[Authorize]
[HttpPost("[action]") ]
[RequestFormLimits(MultipartBodyLengthLimit = 309715200)]
[RequestSizeLimit(309715200)]
public async Task<IActionResult> Upload(IFormFile file )
{
try
{
if (file.Length > 0)
{
using (var ms = new MemoryStream())
{
file.CopyTo(ms);
var fileBytes = ms.ToArray();
var filelist = _fileManager.SaveFile(file.FileName,fileBytes);
if (filelist == null)
return BadRequest();
return Ok(new {
nofile = filelist.StreamId
});
}
}
else
{
return BadRequest();
}
}
catch (Exception ex)
{
return StatusCode(500, "Internal server error");
}
}
角度
UploadFile(file:any ): Observable<any>
{
const formData: FormData = new FormData();
formData.append('file', file);
let headers = new HttpHeaders();
headers = headers.set(
'Content-Type',
'multipart/form-data;'
);
return this._httpClient
.post(this.uploadUrl,formData,{ reportProgress: true, observe: 'events' }
)
}
我的问题解决了,我有一个中间件替换了一系列字符,禁用它解决了问题