你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
放置范围
Put Range
作将一系列字节写入文件。 在版本 2025-05-05 及更高版本中支持此作,以启用 NFS 协议的文件共享。
协议可用性
已启用文件共享协议 | 可用 |
---|---|
SMB |
![]() |
NFS |
![]() |
请求
Put Range
请求构造如下。 建议使用 HTTPS。
方法 | 请求 URI | HTTP 版本 |
---|---|---|
放 | https://myaccount.file.core.windows.net/myshare/mydirectorypath/myfile?comp=range |
HTTP/1.1 |
将请求 URI 中显示的路径组件替换为你自己的路径组件,如下所示:
路径组件 | 描述 |
---|---|
myaccount |
存储帐户的名称。 |
myshare |
文件共享的名称。 |
mydirectorypath |
自选。 父目录的路径。 |
myfile |
文件的名称。 |
有关路径命名限制的信息,请参阅 名称和引用共享、目录、文件和元数据。
URI 参数
可以在请求 URI 上指定以下附加参数。
参数 | 描述 |
---|---|
timeout |
自选。
timeout 参数以秒为单位表示。 有关详细信息,请参阅 设置文件服务作的超时。 |
请求标头
下表描述了必需和可选的请求标头:
常见请求标头
请求标头 | 描述 |
---|---|
Authorization |
必填。 指定授权方案、帐户名称和签名。 有关详细信息,请参阅 授权对 Azure 存储的请求。 |
Date 或 x-ms-date |
必填。 指定请求的协调世界时(UTC)。 有关详细信息,请参阅 授权对 Azure 存储的请求。 |
x-ms-version |
所有授权请求都是必需的。 指定要用于此请求的作的版本。 在版本 2025-05-05 及更高版本中支持此作,以启用 NFS 协议的文件共享。 有关详细信息,请参阅 azure 存储服务 版本控制。 |
Range 或 x-ms-range |
需要 Range 或 x-ms-range 。指定要写入的字节范围。 必须指定范围的开始和结尾。 此标头由 HTTP/1.1 协议规范定义。 对于更新作,范围最大可以为 4 MiB 大小。 对于清除作,范围可以高达文件完整大小的值。 文件服务仅接受 Range 和 x-ms-range 标头的单个字节范围,并且字节范围必须采用以下格式指定:bytes=startByte-endByte 。如果同时指定了 Range 和 x-ms-range ,则服务将使用 x-ms-range 的值。 有关详细信息,请参阅 指定文件服务作的范围标头。 |
Content-Length |
必填。 指定在请求正文中传输的字节数。 当 x-ms-write 标头设置为 clear 时,此标头的值必须设置为 0 。 |
Content-MD5 |
自选。 内容的 MD5 哈希。 此哈希用于验证传输期间数据的完整性。 指定 Content-MD5 标头时,Azure 文件会比较已到达的内容的哈希以及发送的标头值。 如果两个哈希不匹配,作将失败,错误代码为 400(请求错误)。当 x-ms-write 标头设置为 clear 时,不允许 Content-MD5 标头。 如果请求包含该请求,则文件服务将返回状态代码 400(错误请求)。 |
x-ms-write: { update ¦ clear } |
必填。 必须指定以下选项之一:
|
x-ms-lease-id:<ID> |
如果文件具有活动租约,则为必需。 适用于版本 2019-02-02 及更高版本。 如果文件位于启用了 NFS 协议的文件共享上,则忽略此标头,不支持文件租用。 |
x-ms-client-request-id |
自选。 提供客户端生成的不透明值,该值具有配置日志记录时日志中记录的 1-kibibyte (KiB) 字符限制。 强烈建议使用此标头将客户端活动与服务器接收的请求相关联。 有关详细信息,请参阅 监视 Azure 文件。 |
x-ms-file-last-write-time: { now ¦ preserve } |
自选。 版本 2021-06-08 及更高版本。 可以指定以下选项之一:
|
x-ms-file-request-intent |
如果需要 Authorization 标头指定 OAuth 令牌。 可接受的值为 backup 。 此标头指定,如果 Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action 或 Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action 包含在分配给使用 Authorization 标头授权的标识的 RBAC 策略中,则应授予 Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action 。 适用于版本 2022-11-02 及更高版本。 |
x-ms-allow-trailing-dot: { <Boolean> } |
自选。 版本 2022-11-02 及更高版本。 布尔值指定是否应剪裁请求 URL 中存在的尾随点。 如果目标位于启用了 NFS 协议的文件共享上,则默认支持尾随点,则忽略此标头。 有关详细信息,请参阅 命名和引用共享、目录、文件和元数据。 |
仅 SMB 请求标头
没有。
仅 NFS 请求标头
没有。
请求正文
表示要上传的范围的数据。
示例请求:更新字节范围
Request Syntax:
PUT https://myaccount.file.core.windows.net/myshare/myfile?comp=range HTTP/1.1
Request Headers:
x-ms-write: update
x-ms-date: Mon, 27 Jan 2014 22:15:50 GMT
x-ms-version: 2014-02-14
x-ms-range: bytes=0-65535
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=
Content-Length: 65536
示例请求:清除字节范围
Request Syntax:
PUT https://myaccount.file.core.windows.net/myshare/myfile?comp=range HTTP/1.1
Request Headers:
Range: bytes=1024-2048
x-ms-write: clear
x-ms-date: Mon, 27 Jan 2014 23:37:35 GMT
x-ms-version: 2014-02-14
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=
响应
响应包括 HTTP 状态代码和一组响应标头。
状态代码
成功的作返回状态代码 201(已创建)。 有关状态代码的详细信息,请参阅 状态和错误代码。
响应标头
此作的响应包括下表中的标头。 响应还可能包括其他标准 HTTP 标头。 所有标准标头都符合 HTTP/1.1 协议规范。
常见响应标头
响应标头 | 描述 |
---|---|
ETag |
ETag 包含一个值,该值表示文件的版本。 该值用引号引起来。 |
Last-Modified |
返回上次修改目录的日期和时间。 日期格式遵循 RFC 1123。 有关详细信息,请参阅 表示标头中的日期/时间值。 任何修改共享或其属性或元数据的作都更新上次修改时间。 对文件执行的作不会影响共享的上次修改时间。 |
Content-MD5 |
返回此标头,以便客户端可以检查消息内容完整性。 此标头的值由文件服务计算。 它不一定与请求标头中指定的值相同。 |
x-ms-request-id |
唯一标识已发出的请求,并可用于对请求进行故障排除。 有关详细信息,请参阅 API作疑难解答。 |
x-ms-version |
指示用于执行请求的文件服务版本。 |
Date |
由服务生成的 UTC 日期/时间值,该值指示启动响应的时间。 |
x-ms-request-server-encrypted: { true ¦ false } |
版本 2017-04-17 及更高版本。 如果请求的内容通过使用指定的算法成功加密,则此标头的值将设置为 true 。 否则,该值设置为 false 。 |
x-ms-client-request-id |
此标头可用于对请求和相应的响应进行故障排除。 如果此标头存在于请求中,则此标头的值等于 x-ms-client-request-id 标头的值,并且该值包含不超过 1,024 个可见 ASCII 字符。 如果请求中不存在 x-ms-client-request-id 标头,则响应中不存在该标头。 |
x-ms-file-last-write-time |
版本 2021-06-08 及更高版本。 文件的上次写入时间,采用 ISO 8601 格式。 示例:2017-05-10T17:52:33.9551861Z 。 |
仅 SMB 响应标头
没有。
仅 NFS 响应标头
没有。
响应正文
没有。
示例响应
Response Status:
HTTP/1.1 201 Created
Response Headers:
Transfer-Encoding: chunked
Content-MD5: sQqNsWTgdUEFt6mb5y4/5Q==
Date:Mon, 27 Jan 2014 22:33:35 GMT
ETag: "0x8CB171BA9E94B0B"
Last-Modified: Mon, 27 Jan 2014 12:13:31 GMT
x-ms-version: 2014-02-14
Content-Length: 0
Server: Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0
授权
只有帐户所有者才能调用此作。
言论
Put Range
作将一系列字节写入文件。 只能对现有文件调用此作。 无法调用它来创建新文件。 使用当前不存在的文件名调用 Put Range
将返回状态代码 404(找不到)。
若要创建新文件,请调用 创建文件。 文件的大小最大为 4 TiB。
每个 MiB 允许 10 分钟执行 Put Range
作。 如果作平均每 MiB 花费的时间超过 10 分钟,则超时。
如果文件具有活动租约,客户端必须在请求中指定有效的租约 ID 才能写入范围。
范围更新作
使用 Update
选项调用 Put Range
会对指定文件执行就地写入。 指定范围中的任何内容都将被更新覆盖。 为更新作提交 Put Range
的每个范围可能最大为 4 MiB。 如果尝试上传大于 4 MiB 的范围,服务将返回状态代码 413(请求实体太大)。
范围清除作
只要指定的范围与 512 字节对齐,使用 Clear
选项调用 Put Range
会释放存储空间。 已清除的范围不再作为文件的一部分进行跟踪,并且不会在 列表范围 响应中返回。 如果指定的区域未对齐 512 字节,则作会将零写入到不对齐 512 字节的范围的开始或末尾,并释放 512 字节对齐范围内的其余区域。
未清除的任何范围均在 列表范围 响应中返回。 有关示例,请参阅后面的“示例未对齐的清除范围”部分。
文件租用
可以调用 租约文件,以在无限持续时间内针对其他写入获取对文件的独占写入锁。
SMB 客户端字节范围锁
SMB 协议允许字节范围锁管理对文件区域的读取和写入访问权限。 这意味着,如果 SMB 客户端具有与使用 x-ms-range
Put Range
作指定的范围重叠的锁,则启用 SMB 协议的文件共享上的文件 Put Range
失败。 有关详细信息,请参阅 管理文件锁。
NFS 客户端字节范围锁定
NFS 协议 POSIX 字节范围锁本质上是建议的,因此,即使 NFS 客户端持有的字节范围锁存在冲突,位于启用了 NFS 协议的文件共享上的文件上的 Put Range
也不会失败。
SMB 客户端目录更改通知
SMB 协议支持 FindFirstChangeNotification API 函数,该函数允许应用程序检测文件系统中发生更改的时间。 它可以检测何时添加、更改或删除文件或目录,以及文件大小、属性或安全描述符何时发生更改。 当文件或目录更改通过 Azure 文件 REST API 发生更改时,使用此 API 的 SMB 客户端不会收到通知。 但是,由其他 SMB 客户端引起的更改传播通知。
示例未对齐的清除范围
假设使用 创建文件 创建文件,并使用 Put Range
编写单个范围,如下所示:
Request Syntax:
PUT https://myaccount.file.core.windows.net/myshare/myfile?comp=range HTTP/1.1
Request Headers:
x-ms-write: updte
x-ms-date: Mon, 27 Jan 2014 22:15:50 GMT
x-ms-version: 2014-02-14
x-ms-range: bytes=0-65536
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=
Content-Length: 65536
对文件执行 列表范围作将返回以下响应正文:
<?xml version="1.0" ecoding="utf-8"?>
<Ranges>
<Range>
<Start>0</Start>
<End>65536</End>
</Range>
</Ranges>
现在假设执行未对齐的清除范围字节范围作:
Request Syntax:
PUT https://myaccount.file.core.windows.net/myshare/myfile?comp=range HTTP/1.1
Request Headers:
Range: bytes=768-2304
x-ms-write: clear
x-ms-date: Mon, 27 Jan 2014 23:37:35 GMT
x-ms-version: 2014-02-14
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=
文件的后续 列表范围作返回以下响应正文:
<?xml version="1.0" encoding="utf-8"?>
<Ranges>
<Range>
<Start>0</Start>
<End>1024</End>
</Range>
<Range>
<Start>2048</Start>
<End>65535</End>
</Range>
</Ranges>
请注意,零已从 768-1024 和 2048-2304 写入未对齐的空间。
共享快照不支持 Put Range
,这是共享的只读副本。 尝试对共享快照执行此作失败,并出现 400(InvalidQueryParameterValue)。