- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 REST API 将文件上传到 Azure 文件服务。创建文件后,“放置范围”请求失败并显示“InvalidHeaderValue”
到目前为止,我已经使用此处找到的文档成功创建了该文件。 https://learn.microsoft.com/en-us/rest/api/storageservices/create-file
之后,我尝试按照此处找到的文档将内容放入新创建的文件中。 https://learn.microsoft.com/en-us/rest/api/storageservices/put-range
这是我正在使用的 URI 的示例。它在文档中的示例旁边看起来是正确的。
uri = 'https://<account>.file.core.windows.net/<share>/<directory>/<file>?comp=range&<sas token>'
我通过...获取文件的内容
with open(file.txt, mode='rb') as fh:
data = fh.read()
我的标题看起来像这样...
headers = {
'x-ms-write':'update',
'x-ms-date':'Wed, 10 Apr 2019 22:14:17 GMT',
'x-ms-version':'2018-03-28',
'x-ms-range':'bytes=0-' + str(len(data)),
'Content-Length':str(len(data) + 1)
}
请求...
requests.put(url, headers=headers, data=data)
我得到的响应代码是 400,返回 header 是这样的...
{
'Content-Length': '322',
'Content-Type': 'application/xml',
'Server': 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id': '23642a26-e01a-0049-35da-ef0109000000',
'x-ms-version': '2018-03-28',
'x-ms-error-code': 'InvalidHeaderValue',
'Date': 'Wed, 10 Apr 2019 20:14:46 GMT'
}
感谢您提前提供帮助。
最佳答案
该错误是由于 x-ms-range
和 Content-Length
值不正确造成的。
正确的应该如下所示:
headers={
#other headers
'x-ms-range':'bytes=0-' + str(len(data)-1),
'Content-Length':str(len(data))
}
我的示例代码如下,并且工作正常:
import requests
uri = r'https://xxx.file.core.windows.net/test/good222.txt?comp=range&sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-04-12T10:59:42Z&st=2019-04-12T02:59:42Z&spr=https&sig=xxxxxxxxxx'
with open("D:\\hello.txt",mode='rb') as fh:
data = fh.read()
print(len(data))
headers={
'x-ms-write':'update',
'x-ms-date':'Fri, 12 Apr 2019 06:40:14 GMT',
'x-ms-version':'2018-03-28',
'x-ms-range':'bytes=0-' + str(len(data)-1),
'Content-Length':str(len(data))
}
r= requests.put(uri,data=data,headers=headers)
print(r.status_code)
print(r.headers)
结果(该文件也在 Azure 门户上更新):
另请注意,文件(本地)长度不应长于您要在 Azure 文件共享上更新的长度。
关于python-3.x - Azure 文件服务 "PUT Range"REST API 'InvalidHeaderValue' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55621162/
我正在尝试访问 Azure 中给定的 URL 以获取 Azure 文件存储格式的文件,但出现以下错误。有可能得到这个吗?为什么他们要提供一个无用的公共(public) URL?另外我如何直接从 IIS
我正在尝试使用 REST API 将文件上传到 Azure 文件服务。创建文件后,“放置范围”请求失败并显示“InvalidHeaderValue” 到目前为止,我已经使用此处找到的文档成功创建了该文
我正在尝试使用 REST API 将文件上传到 Azure 文件服务。创建文件后,“放置范围”请求失败并显示“InvalidHeaderValue” 到目前为止,我已经使用此处找到的文档成功创建了该文
这是抛出的错误: Headers: Server: Azurite-Blob/3.14.1 x-ms-error-code: InvalidHeaderValue x-ms-request-id: a
这是抛出的错误: Headers: Server: Azurite-Blob/3.14.1 x-ms-error-code: InvalidHeaderValue x-ms-request-id: a
我是一名优秀的程序员,十分优秀!