你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Path - Update
追加数据 |刷新数据 |设置属性 |设置访问控制
上传要追加到文件的数据、刷新以前上传到文件的数据、设置文件或目录的属性,或设置文件或目录的访问控制。 数据只能追加到文件中。 不支持使用多个客户端对同一文件的并发写入。 此操作支持条件 HTTP 请求。 有关详细信息,请参阅 为 Blob 服务操作指定条件标头。
PATCH https://{accountName}.{dnsSuffix}/{filesystem}/{path}?action={action}
PATCH https://{accountName}.{dnsSuffix}/{filesystem}/{path}?action={action}&position={position}&retainUncommittedData={retainUncommittedData}&close={close}&mode={mode}&maxRecords={maxRecords}&forceFlag={forceFlag}&continuation={continuation}&flush={flush}&timeout={timeout}
URI 参数
名称 | 在 | 必需 | 类型 | 说明 |
---|---|---|---|---|
account
|
path | True |
string |
Azure 存储帐户名称。 |
dns
|
path | True |
string |
Azure Data Lake Storage 终结点的 DNS 后缀。 |
filesystem
|
path | True |
string minLength: 3maxLength: 63 pattern: ^[$a-z0-9](?!.*--)[-a-z0-9]{1,61}[a-z0-9]$ |
文件系统标识符。 |
path
|
path | True |
string |
文件或目录路径。 |
action
|
query | True |
操作必须是“append”才能上传要追加到文件的数据,“flush”以刷新以前将数据上传到文件、“setProperties”以设置文件或目录的属性,或“setAccessControl”以设置文件或目录的所有者、组、权限或访问控制列表,或“setAccessControlRecursive”以递归方式设置目录的访问控制列表。 请注意,必须为帐户启用分层Namespace才能使用访问控制。 另请注意,访问控制列表(ACL)包括所有者、拥有组和其他权限,因此 x-ms-permissions 和 x-ms-acl 请求标头互斥。 |
|
close
|
query |
boolean |
Azure 存储事件允许应用程序在文件更改时接收通知。 启用 Azure 存储事件后,将引发文件更改事件。 此事件具有一个属性,指示这是最终更改,以区分中间刷新到文件流与文件流的最终关闭之间的差异。 仅当操作为“刷新”并启用更改通知时,close 查询参数才有效。 如果关闭值为“true”且刷新操作成功完成,则服务会引发文件更改通知,该属性指示这是最终更新(文件流已关闭)。 如果为“false”,则会引发更改通知,指示文件已更改。 默认值为 false。 Hadoop ABFS 驱动程序将此查询参数设置为 true,以指示文件流已关闭。 |
|
continuation
|
query |
string |
对于“setAccessControlRecursive”操作,可选且有效。 使用每个调用处理的路径数是有限的。 如果要处理的路径数超过此限制,则会在响应标头 x-ms-continuation 中返回延续标记。 在响应中返回延续标记时,它必须经过百分比编码,并在后续调用 setAccessControlRecursive 操作中指定。 |
|
flush
|
query |
boolean |
仅对追加调用有效。 此参数允许调用方在追加调用期间刷新。 默认值为“false”,如果为“true”,则会使用追加调用刷新数据。 请注意,使用 flush=true 时,不支持以下标头 - “x-ms-cache-control”、“x-ms-content-encoding”、“x-ms-content-type”、“x-ms-content-language”、“x-ms-content-md5”、“x-ms-content-disposition”。 若要在刷新过程中设置这些标头,请使用 action=flush |
|
force
|
query |
boolean |
对于“setAccessControlRecursive”操作,可选且有效。 如果这是“false”操作,在遇到用户错误(4XX)时会很快终止。 如果为“true”,API 将忽略用户错误,并继续对目录的其他子实体执行操作。 将在任一方案的响应中返回用户错误的详细状态。 仅当 forceFlag 为“true”时,才会返回延续标记,以防出现用户错误。 forceFlag 的默认值为 false。 |
|
max
|
query |
integer (int32) minimum: 1 |
对于“setAccessControlRecursive”操作,可选且有效。 它指定应用 acl 更改的最大文件或目录数。 如果省略或大于 2,000 个,则请求将处理最多 2,000 个项目 |
|
mode
|
query |
string |
自选。 “setAccessControlRecursive”操作有效且必需。 模式“set”设置文件和目录的 POSIX 访问控制权限,“修改”修改文件和目录上预先存在的一个或多个 POSIX 访问控制权限,“删除”将删除先前在文件和目录上存在的一个或多个 POSIX 访问控制权限 |
|
position
|
query |
integer (int64) |
此参数允许调用方并行上传数据,并控制将数据追加到文件的顺序。 上传要追加到文件的数据以及将数据刷新到文件时,需要用到该文件。 该值必须是要追加数据的位置。 上载的数据不会立即刷新或写入文件。 若要刷新,以前上传的数据必须连续,位置参数必须指定并等于写入所有数据后文件长度,并且请求中不得包含请求实体正文。 |
|
retain
|
query |
boolean |
仅适用于刷新操作。 如果为“true”,则刷新操作完成后保留未提交的数据;否则,刷新操作后将删除未提交的数据。 默认值为 false。 刷新成功时,偏移量小于指定位置的数据将写入文件,但此可选参数允许在刷新位置之后保留数据,以便将来刷新操作。 |
|
timeout
|
query |
integer (int32) minimum: 1 |
可选操作超时值(以秒为单位)。 句点从服务接收请求时开始。 如果超时值在操作完成之前运行,则操作将失败。 |
请求头
Media Types: "application/octet-stream", "text/plain"
名称 | 必需 | 类型 | 说明 |
---|---|---|---|
Content-Length |
integer (int64) minimum: 0 |
“追加数据”和“刷新数据”是必需的。 对于“刷新数据”,必须为 0。 必须是“追加数据”的请求内容的长度(以字节为单位)。 |
|
Content-MD5 |
string |
自选。 请求内容的 MD5 哈希。 此标头在“Append”和“Flush”操作上有效。 此哈希用于验证传输过程中请求内容的完整性。 指定此标头后,存储服务会将到达的内容的哈希与此标头值进行比较。 如果两个哈希不匹配,操作将失败,错误代码为 400(请求错误)。 请注意,此 MD5 哈希未随文件一起存储。 此标头与请求内容相关联,而不是与文件本身的存储内容相关联。 |
|
x-ms-lease-id |
string pattern: ^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$ |
如果存在活动租约,则必须指定租约 ID。 “setAccessControlRecursive”操作无效。 |
|
x-ms-cache-control |
string |
可选且仅对刷新和设置属性操作有效。 该服务存储此值,并将其包含在“读取文件”操作的“Cache-Control”响应标头中。 |
|
x-ms-content-type |
string |
可选且仅对刷新和设置属性操作有效。 该服务存储此值并将其包含在“读取文件”操作的“Content-Type”响应标头中。 |
|
x-ms-content-disposition |
string |
可选且仅对刷新和设置属性操作有效。 该服务存储此值,并将其包含在“读取文件”操作的“Content-Disposition”响应标头中。 |
|
x-ms-content-encoding |
string |
可选且仅对刷新和设置属性操作有效。 该服务存储此值,并将其包含在“读取文件”操作的“Content-Encoding”响应标头中。 |
|
x-ms-content-language |
string |
可选且仅对刷新和设置属性操作有效。 该服务存储此值并将其包含在“读取文件”操作的“Content-Language”响应标头中。 |
|
x-ms-content-md5 |
string |
可选且仅对“刷新和设置属性”操作有效。 该服务存储此值,并将其包含在“读取和获取属性”操作的“Content-Md5”响应标头中。 如果未在请求中指定此属性,则会清除该文件的属性。 对“读取和获取属性”的后续调用将不会返回此属性,除非它再次在该文件上显式设置。 |
|
x-ms-properties |
string |
自选。 要与文件或目录一起存储的用户定义属性,格式为逗号分隔的名称和值对列表“n1=v1,n2=v2,...”,其中每个值都是 base64 编码字符串。 请注意,字符串只能包含 ISO-8859-1 字符集中的 ASCII 字符。 仅适用于 setProperties 操作。 如果文件或目录存在,列表中未包含的任何属性都将被删除。 如果省略标头,则会删除所有属性。 若要合并新属性和现有属性,请先获取所有现有属性和当前 E-Tag,然后使用 E-Tag 发出条件请求,并包括所有属性的值。 |
|
x-ms-owner |
string |
仅适用于 setAccessControl 操作的可选和有效。 设置文件或目录的所有者。 |
|
x-ms-group |
string |
仅适用于 setAccessControl 操作的可选和有效。 设置文件或目录的拥有组。 |
|
x-ms-permissions |
string |
可选且仅在为帐户启用分层Namespace时才有效。 设置文件所有者、文件拥有组和其他文件的 POSIX 访问权限。 可以授予每个类读取(4)、写入(2)或执行 (1) 权限。 支持符号符号(rwxrw-rw-)和 4 位八进制表示法(例如 0766)。 粘性位也受支持,在符号表示法中,它由字母 t 或 T 表示,具体取决于其他类别的执行位是分别设置还是未设置(例如,带有粘滞位的 rwxrw-rw- 表示为 rwxrw-rwT)。带有粘滞位的 rwxrw-rwx 表示为 rwxrw-rwt),不存在 t 或 T 表示未设置粘滞位。 在 4 位八进制表示法中,它由第一位数字表示(例如 1766 表示具有粘性位的 rwxrw-rw),0766 表示 rwxrw-rw-without粘性位)。 与 x-ms-acl 结合使用无效。 |
|
x-ms-acl |
string |
对于 setAccessControl 和 setAccessControlRecursive 操作,可选且有效。 setAccessControlRecursive 操作是必需的。 设置文件和目录的 POSIX 访问控制权限。 该值是一个逗号分隔的访问控制项列表,在 setAccessControl 和 setAccessControlRecursive 的“set”模式下,完全替换现有访问控制列表(ACL)。 setAccessControlRecursive 的“modify”模式更新预先存在的 ACLS。 每个访问控制项(ACE)由范围、类型、用户或组标识符以及格式为“[scope:][type]:[id]:[permissions]”格式的权限组成。 范围必须为“default”,以指示 ACE 属于目录的默认 ACL;否则范围为隐式范围,ACE 属于访问 ACL。 有四种 ACE 类型:“user”向所有者或命名用户授予权限,“组”向拥有组或命名组授予权限,“掩码”将授予给命名用户和组成员的权限,“其他”向未在任何其他条目中找到的所有用户授予权限。 对于类型为“mask”和“other”的条目,省略用户或组标识符。 所有者和拥有组也省略用户或组标识符。 权限字段是一个 3 个字符序列,其中第一个字符是“r”来授予读取访问权限,第二个字符是“w”来授予写入访问权限,第三个字符是“x”,用于授予执行权限。 如果未授予访问权限,则使用“-”字符表示拒绝该权限。 例如,以下 ACL 授予对文件所有者和john.doe@contoso、拥有组的读取权限、写入和执行权限,对其他人没有任何权限:“user::rwx,user:john.doe@contoso:rwx,group::r--,other::---,mask=rwx”。 与 x-ms-permissions 结合使用无效。 setAccessControlRecursive 的“remove”模式删除了预先存在的 ACL,不应在指定的访问控制列表中包含权限:“user:john.doe@contoso:, mask:”。 setAccessControlRecursive 的“set”模式设置替换指定范围预先存在的 ACL 的 ACL,并且必须包含所有三种 -- 拥有用户、拥有组和其他信息(如果已设置访问范围,或者是否在默认范围内设置拥有用户、拥有组或其他项)。 setAccessControlRecursive 的“set”和“modify”模式必须包含作为访问控制列表的一部分的权限。 |
|
If-Match |
string |
“刷新数据”、“设置访问控制”和“设置属性”可选,但对追加数据和设置访问控制递归无效。 ETag 值。 仅当资源的 ETag 与指定的值匹配时,才指定此标头来执行该操作。 必须在引号中指定 ETag。 |
|
If-None-Match |
string |
“刷新数据”、“设置访问控制”和“设置属性”可选,但对追加数据和设置访问控制递归无效。 ETag 值或特殊通配符 (“*”) 值。 仅当资源的 ETag 与指定的值不匹配时,才指定此标头来执行该操作。 必须在引号中指定 ETag。 |
|
If-Modified-Since |
string |
“刷新数据和设置属性”可选,但对追加数据和设置访问控制递归无效。 日期和时间值。 仅当资源自指定日期和时间以来已修改时,才指定此标头以执行该操作。 |
|
If-Unmodified-Since |
string |
“刷新数据和设置属性”可选,但对追加数据和设置访问控制递归无效。 日期和时间值。 仅当资源自指定日期和时间以来尚未修改时,才指定此标头来执行该操作。 |
|
x-ms-encryption-key |
string |
自选。 Base64 编码的 AES-256 加密密钥。 |
|
x-ms-encryption-key-sha256 |
string |
自选。 加密密钥的 Base64 编码 SHA256 哈希。 |
|
x-ms-encryption-algorithm: AES256 |
string |
自选。 指定要用于加密的算法。 此标头的值必须是 AES256。 |
|
x-ms-lease-action | True |
从追加和刷新操作版本 2020-08-04 开始。 Append 支持“acquire”、“auto-renew”和“acquire-release”操作。 如果“acquire”,它将获取租约。 如果“自动续订”,它将续订租约。 如果“acquire-release”,它将获取 & 完成操作 & 释放租约的操作。 “Release”操作仅在刷新操作中受支持。 如果为“true”,将使用 x-ms-lease-id 标头中的租约 ID 信息释放文件中的租约。 |
|
x-ms-lease-duration |
integer (int32) |
获取租约需要租约持续时间,并指定租约持续时间(以秒为单位)。 租约持续时间必须介于 15 到 60 秒之间,或 -1 无限租约。 |
|
x-ms-proposed-lease-id |
string pattern: ^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$ |
当“x-ms-lease-action”为“acquire”或“change”时必需。 如果操作成功,将使用此租约 ID 获取租约。 |
|
x-ms-client-request-id |
string pattern: ^[{(]?[0-9a-f]{8}[-]?([0-9a-f]{4}[-]?){3}[0-9a-f]{12}[)}]?$ |
分析日志中记录的 UUID,用于故障排除和关联。 |
|
x-ms-date |
string |
指定请求的协调世界时(UTC)。 使用共享密钥授权时,这是必需的。 |
|
x-ms-version |
string |
指定用于处理请求的 REST 协议的版本。 使用共享密钥授权时,这是必需的。 |
请求正文
Media Types: "application/octet-stream", "text/plain"
名称 | 类型 | 说明 |
---|---|---|
requestBody |
object (file) |
仅对追加操作有效。 要上传和追加到文件的数据。 |
响应
名称 | 类型 | 说明 |
---|---|---|
200 OK |
数据已刷新(写入)到文件,或者已成功设置属性。 响应正文是可选的,仅适用于“SetAccessControlRecursive” 标头
|
|
202 Accepted |
已上传的数据已接受。 标头
|
|
Other Status Codes |
发生错误。 下面列出了可能的 HTTP 状态、代码和消息字符串:
标头
|
定义
名称 | 说明 |
---|---|
Acl |
|
Data |
|
Error |
服务错误响应对象。 |
Path |
从追加和刷新操作版本 2020-08-04 开始。 Append 支持“acquire”、“auto-renew”和“acquire-release”操作。 如果“acquire”,它将获取租约。 如果“自动续订”,它将续订租约。 如果“acquire-release”,它将获取 & 完成操作 & 释放租约的操作。 “Release”操作仅在刷新操作中受支持。 如果为“true”,将使用 x-ms-lease-id 标头中的租约 ID 信息释放文件中的租约。 |
Path |
操作必须是“append”才能上传要追加到文件的数据,“flush”以刷新以前将数据上传到文件、“setProperties”以设置文件或目录的属性,或“setAccessControl”以设置文件或目录的所有者、组、权限或访问控制列表,或“setAccessControlRecursive”以递归方式设置目录的访问控制列表。 请注意,必须为帐户启用分层Namespace才能使用访问控制。 另请注意,访问控制列表(ACL)包括所有者、拥有组和其他权限,因此 x-ms-permissions 和 x-ms-acl 请求标头互斥。 |
Set |
AclFailedEntryList
名称 | 类型 | 说明 |
---|---|---|
errorMessage |
string |
|
name |
string |
|
type |
string |
DataLakeStorageError
名称 | 类型 | 说明 |
---|---|---|
error |
服务错误响应对象。 |
Error
服务错误响应对象。
名称 | 类型 | 说明 |
---|---|---|
code |
string |
服务错误代码。 |
message |
string |
服务错误消息。 |
PathLeaseAction
从追加和刷新操作版本 2020-08-04 开始。 Append 支持“acquire”、“auto-renew”和“acquire-release”操作。 如果“acquire”,它将获取租约。 如果“自动续订”,它将续订租约。 如果“acquire-release”,它将获取 & 完成操作 & 释放租约的操作。 “Release”操作仅在刷新操作中受支持。 如果为“true”,将使用 x-ms-lease-id 标头中的租约 ID 信息释放文件中的租约。
值 | 说明 |
---|---|
acquire | |
acquire-release | |
auto-renew | |
release |
PathUpdateAction
操作必须是“append”才能上传要追加到文件的数据,“flush”以刷新以前将数据上传到文件、“setProperties”以设置文件或目录的属性,或“setAccessControl”以设置文件或目录的所有者、组、权限或访问控制列表,或“setAccessControlRecursive”以递归方式设置目录的访问控制列表。 请注意,必须为帐户启用分层Namespace才能使用访问控制。 另请注意,访问控制列表(ACL)包括所有者、拥有组和其他权限,因此 x-ms-permissions 和 x-ms-acl 请求标头互斥。
值 | 说明 |
---|---|
append | |
flush | |
setAccessControl | |
setAccessControlRecursive | |
setProperties |
SetAccessControlRecursiveResponse
名称 | 类型 | 说明 |
---|---|---|
directoriesSuccessful |
integer (int32) |
|
failedEntries | ||
failureCount |
integer (int32) |
|
filesSuccessful |
integer (int32) |