File 将文件上载到.net core 3.1 API-仅收到一半文件
我有一个.net core 3.1 API控制器,它接收用于在Azure中存储的文件。但所有接收到的文件都只是“部分接收”——例如,如果图像文件被发送到控制器,则只接收到图像的一半(或更少) 我有以下控制器定义:File 将文件上载到.net core 3.1 API-仅收到一半文件,file,.net-core,upload,File,.net Core,Upload,我有一个.net core 3.1 API控制器,它接收用于在Azure中存储的文件。但所有接收到的文件都只是“部分接收”——例如,如果图像文件被发送到控制器,则只接收到图像的一半(或更少) 我有以下控制器定义: [HttpPost()] public async Task<IActionResult> Post([FromQuery] Guid documentId) { HttpContext.Request.EnableBuffering();
[HttpPost()]
public async Task<IActionResult> Post([FromQuery] Guid documentId)
{
HttpContext.Request.EnableBuffering();
var buffer = new byte[Convert.ToInt32(HttpContext.Request.ContentLength)];
using (var stream = HttpContext.Request.Body.ReadAsync(buffer, 0, buffer.Length))
{
MemoryStream myStreamstream = new MemoryStream(buffer);
myStreamstream.Position = 0;
azureStorageHelper myStorageHelper = new azureStorageHelper();
//helper method to get a writable BlockBlob (helper method works in other projects)
Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blockBlob =
myStorageHelper.getWriteableFileBlobFromAzure("test" + DateTime.Now.Ticks.ToString() + ".jpg");
await blockBlob.UploadFromStreamAsync(myStreamstream).ContinueWith(
(copyTask) =>
{
});
}
}
[HttpPost()]
公共异步任务发布([FromQuery]Guid documentId)
{
HttpContext.Request.EnableBuffering();
var buffer=新字节[Convert.ToInt32(HttpContext.Request.ContentLength)];
使用(var stream=HttpContext.Request.Body.ReadAsync(buffer,0,buffer.Length))
{
MemoryStream myStreamstream=新的MemoryStream(缓冲区);
myStreamstream.Position=0;
azureStorageHelper myStorageHelper=新的azureStorageHelper();
//获取可写BlockBlob的helper方法(helper方法适用于其他项目)
Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob blockBlob=
myStorageHelper.getWriteableFileBlobFromAzure(“test”+DateTime.Now.Ticks.ToString()+”.jpg”);
等待blockBlob.UploadFromStreamAsync(myStreamstream)。继续(
(复制任务)=>
{
});
}
}
文件与邮递员(用于测试)一起上载为“二进制/选择文件”
我面临着完全相同的问题。BlobStorage SDK似乎只上载流的缓冲部分,而忽略其余部分!你找到解决方案了吗?没有,我仍然没有找到解决方案。我最后做的是:1)删除HttpContext.Request.EnableBuffering();2) 将文件存储到Azure 3)从blobstorage读取文件,然后采取必要的操作。