Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 将文件上载到.net core 3.1 API-仅收到一半文件_File_.net Core_Upload - Fatal编程技术网

File 将文件上载到.net core 3.1 API-仅收到一半文件

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();

我有一个.net core 3.1 API控制器,它接收用于在Azure中存储的文件。但所有接收到的文件都只是“部分接收”——例如,如果图像文件被发送到控制器,则只接收到图像的一半(或更少)

我有以下控制器定义:

[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读取文件,然后采取必要的操作。