【发布时间】:2020-03-02 15:01:26
【问题描述】:
我们有一个托管在 azure app 服务中的应用程序(.Net 核心),我们正在尝试使用 UI 中的表单数据通过 Web API 将大文件上传到 Azure blob。我们更改了请求长度和 API 请求超时,即使上传 200MB 文件,我们仍然面临连接超时错误
下面是我正在使用的示例代码
[HttpPost]
[Route("upload")]
[Consumes("multipart/form-data")]
[RequestFormLimits(MultipartBodyLengthLimit = 2147483648)]
public async Task<IHttpActionResult> Upload([FromForm] FileRequestObject fileRequestObject)
{
var url = "upload_url_to_blob_storage";
var file = fileRequestObject.Files[0];
var blob = new CloudBlockBlob(new Uri(url));
blob.Properties.ContentType = file.ContentType;
await blob.UploadFromStreamAsync(file.InputStream);
//some other operations based on file upload
return Ok();
}
public class FileRequestObject
{
public List<IFormFile> Files { get; set; }
public string JSON { get; set; }
public string BlobUrls { get; set; }
}
【问题讨论】:
-
是否可以选择使用 API 生成 SAS 令牌,然后将文件直接上传到 blob 存储区?
-
您确定没有达到 PUT 操作的块 Blob 大小限制吗?``` 对于版本 2016-05-31 和更高版本,旧版本为 64 MB。如果您的 blob 对于 2016-05-31 及更高版本大于 256 MB,或者对于旧版本大于 64 MB,则必须将其作为一组块上传。``` 更多详细信息,请参阅docs.microsoft.com/en-us/rest/api/storageservices/put-blob跨度>
-
@kgalic 不,我们在 API 中完成了上传操作,我们正在将流数据传递到 API 端点,然后从那里上传到 blob
-
如果块 Blob 大小限制超出,我们是否会收到超时错误
-
@RamakrishnaReddy,请与我们分享您使用的代码,并删除个人数据/秘密。
标签: c# azure asp.net-core azure-blob-storage asp.net-core-webapi