1

我的问题的背景是我想编写一个自定义 API 来接收文件上传请求,验证它们,生成具有所需权限的 SAS 令牌,并向调用客户端返回 HTTP 301,其中包含 Azure 存储帐户的 URI,其中包含所有必需的查询参数,例如https://mystorage.file.core.windows.net/share/movie.avi?srt=sco&sv=2020-02-10&ss=f&sp=rwdlacup&st=2022-03-02T14:10:19Z&se=2022-03-02T15:10:19Z&sig=ABC=.

问题在于,Blob 存储 REST API文件存储 REST API都需要必需的 HTTP 标头。这反过来将要求客户端设置我想要避免的那些,在最好的情况下,客户端只发送PUT https://myapi.com/upload带有一些身份验证信息的 URI,并返回一个包含上传文件所需的所有参数的 URI。

另一种方法是客户端将他的文件发送到https://myapi.com/upload,然后 API 负责将文件上传到存储帐户。鉴于文件可能会变大,我想避免这种额外的开销,将文件直接上传到目的地并将 API 用作验证器和 SAS 提供程序(如图的第二部分所示)。

4

1 回答 1

2

是否可以在不传递标头的情况下使用 REST API 将文件上传到 Azure 存储帐户?

这是不可能的。使用共享访问签名 (SAS),您可以省略一些必需的标头,但不能全部省略。

例如,在上传 blob 时,您必须包含x-ms-blob-type标头。

在文件存储中上传文件时,事情变得有点复杂,因为上传文件是一个两步过程:1)您使用Create File请求创建一个空文件,在这里您必须指定x-ms-content-length请求标头,2)您将数据推送到此文件中使用Put Range请求,在这里你必须指定range(或x-ms-range)和x-ms-write标题。

于 2022-03-03T03:32:11.513 回答