文件上传和下载
1. 文件上传
将本地的文件(批量)上传至存储空间。可参考:上传策略 和 上传资源
- 操作需要指定数据源,目前仅支持上传本地文件到七牛空间,故需要配置本地数据源,参考:配置数据源
- 支持通过
-a=<account-name>
/-d
使用已设置的账号,则不需要再直接设置密钥,参考:账号设置
上传单个文件
上传单个文件则使用 qsuits 的 single 模式来完成,必须加上 -s
参数才能使用该模式,命令举例如下:qsuits -d -s -process=qupload -bucket=temp -filepath=test.py -key=test.py
返回结果:test.py {"hash":"Fto5o-5ea0sNMlW_75VgGJCv2AcJ","key":"test.py"}
表示本地文件 test.py 上传到空间的 hash 值和 key,您可以选择一些上传策略再进行上传,如:-policy.deleteAfterDays=7
表示上传后七天自动删除-policy.callbackUrl=http://xxx.com/qiniu/upload/callback
表示上传结果回调到您的服务器地址
更多上传策略可参考:七牛文件上传策略,上传操作支持的更多参数参考如下的批量上传配置参数说明。
批量上传文件
支持选择部分目录/文件类型进行上传,也可以通过过滤器筛选文件更新日期实现增量上传。过滤器的使用参考:文件过滤器,设置相关参数即生效,在文件上传前先过滤,非目标文件不会进行上传。
process=qupload
path=
directories=
directory-config=
anti-prefixes=
ak=
sk=
bucket=
filepath-index=
parent-path=
record=
keep-dir=
keep-path=
add-prefix=
rm-prefix=
expires=
policy.[]=
params.[]=
crc=
threshold=
check=
参数名 | 参数值及类型 | 含义 |
---|---|---|
process | 上传资源时设置为 qupload | 表示上传资源操作 |
path | 本地路径 | path 是数据源选项,可以通过设置本地路径来指定要上传的文件,为目录时会遍历目录下(包括内层目录)除隐藏文件外的所有文件 |
directories | 文件目录列表 | 如果希望上传 path 下的几个目录中文件,可设置 path 路径下需要读取的目录列表,以 , 号分割目录名,不设置默认读取 path 下全部目录进行文件的上传 |
directory-config | 配置文件路径 | 数据源文件目录及对应已上传的文件名配置,配置中记录已上传的文件在 path 中的位置标识,配置格式为 json,参考 directory-config 配置文件,该配置不需要自行编写 |
anti-prefixes | 文件目录列表 | 表示上传目录下文件时排除某些名称前缀的子目录,支持以 , 分隔的列表,特殊字符同样需要转义符 |
ak、sk | 长度40的字符串 | 七牛账号的ak、sk,通过七牛控制台个人中心获取 |
bucket | 字符串 | 上传到的资源原空间名称 |
parent-path | 上级目录 | 该参数通常和 filepath-index 同时使用,用于规定文本中的路径值拼接上层目录得到要上传的文件路径,通过 path 自动读取文件的情况下不需要设置该参数 |
filepath-index | 文件路径索引 | 非必填字端,当直接上传 path 路径中的文件时无需设置,如果是通过读取文本文件每一行中的路径信息则需要设置,未设置任何索引和 parent-path 时根据 parse 类型默认为 0 或 "filepath" |
record | true/false | 对于大于 4M 的文件会自动使用分片上传,该参数用于规定分片上传是否记录上传进度信息(断点续传作用),默认不开启 |
keep-path | true/false | 上传到空间的文件名(资源 key)是否保存从 path 开始的完整路径,默认为 true,则使用文件完整路径作为空间的资源 key |
keep-dir | true/false | 是否维持目录结构而针对目录产生一条文件名以 / 结尾的文件记录,即使目录为空也会创建该目录,默认为 false |
add-prefix | 字符串 | 表示为保存的文件名添加指定前缀 |
rm-prefix | 字符串 | 表示将得到的目标文件名去除存在的指定前缀后再作为保存的文件名 |
expires | 整型数字 | 单个文件上传操作的鉴权有效期,单位 s(秒),默认为 3600 |
policy.[] | 字符串/整型数字 | 可以设置一些上传策略参数,如 policy.deleteAfterDays=7 表示七天之后自动删除文件,其他参数可参考七牛上传策略 |
params.[] | 字符串 | 上传时设置的一些变量参数,如 params.x:user=138300 表示 x:user 的信息为 138300,可参考七牛上传自定义变量 |
crc | true/false | 是否开启 crc32 来校验文件的上传,默认为 false |
threshold | 整型数字 | 设置文件分片上传的阈值,超过该阈值时才启用分片上传,小于该阈值的文件都是表单上传,默认阈值是 4M,对于内网上传时可以设置较大的阈值提高上传效率 |
check | 字符串 | 进行文件存在性检查,目前可设置为 stat ,表示通过 stat 接口检查目标文件名是否存在,如果存在则不进行 fetch,而记录为 file exsits |
1、关于 directory-config
directory-config 用来设置要读取的文件目录及位置信息,在 path 为空的情况下,directory-config 中的文件名必须是完整的目录路径,path 为目录时,directory-config 中的目录名可以采取相对 path 路径下的目录名。配置中每一个目录对应的值表示在一个文件名信息,在实际读取数据源过程中,会参照该文件名,从之后的文件开始读取,即此文件名信息标示目录中的读取位置,可以用于设置断点。directory-config 需要的断点文件基于上次上传文件操作未完成的情况下可以产生,理论上只要上传的目录结构没有发生变化,断点文件就能针对上次未完成上传的文件进行上传,而不会所有文件重新上传一遍,断点信息的获取参考断点续操作。
2、上传超时时间
timeout 参数可以通过全局的 timeout 来设置,参考:超时设置
3、关于上传的文件路径
上传文件的操作可以直接上传通过 path 指定的目录下的文件,也支持传通过文件列表中提供的 filepath 的文件,如:
# 直接上传,如果 test 为一个文件,则直接上传,如果为目录,则读取该目录下所有文件进行上传
path=test
# 上传文件列表中指定的 filepath 文件,从 filelist.txt 中通过 parse,separator,filepath-index 等参数来解析每一行,得到文件路径等信息组织上传操作,当然 path 也可以指定目录,会通过读取文件列表的方式解析目录下所有
# text 文件中的每一行进行一次上传操作
path=filelist.txt
parse=tab
separator=\t
filepath-index=0
indexes=1
通过 path 指定的目录直接上传文件时,会自动产生文件 etag,size,timestamp,mimeType 信息,因此也支持通过过滤器设置过滤多个条件,通过筛选的文件才进行上传。
4、关于上传空间保存的文件名
如果是通过 path 下直接上传的文件,文件名采用自动解析,如果通过文件列表和 filepath-index 解析进行上传的文件,文件名可以自动确定也可以根据 key
(key 下标由 indexes 的第一个参数确定) 下标解析。如:
# 自动获取文件名:文件名为 test 或者 test/ 目录加上目录下的文件路径,比如 test 目录下存在文件 1.txt,则上传文件名默认为 test/1.txt,如果设置
# keep-path=false 则文件名去除父层路径,最终文件名为 1.txt
path=test
keep-path=false
# add-prefix 和 rm-prefix 可以对文件名做进一步自定义处理
# add-prefix=
# rm-prefix=
# 上传文件列表中指定的 filepath 文件,如下所示表示文本中的每一行(以 \t 分割)的第一个字段为 filepath,那么上传 filepath 这
# 个文件的文件名则为第二个字段确定的 key,同时可以使用 add-prefix 和 rm-prefix 对文件名做进一步自定义处理
parse=tab
separator=\t
filepath-index=0
indexes=1
注意:七牛存储空间不支持文件名以 ../
, ./
开头或者包含 /../
, /./
这种情况,会造成无法访问,因此设置文件名时请注意,如果 path 是以 ../
或 ./
开头的路径进行直接上传时文件名会解析时会去掉该开头。filepath 值也尽量不要携带这些部分,因为在 keep-path=true 时路径名即作为文件名。
5、关于 filepath-index
当使用 file 源且 parse=tab/csv 时 [xx-]index(ex) 设置的下标必须为整数。filepath-index 表示输入行含 filepath 形式的文件路径,未设置的情况下则使用 key 字段加上 parent-path 的方式访问文件路径,key 下标用 indexes 参数设置,参见 indexes 索引及关于 parse 和索引。
6、命令行参数方式
-process=qupload -ak= -sk= -bucket= -path= ...
2. 通过 url 同步上传
将 url 的内容同步上传至存储空间,同时依据原 url 设置目标文件名。上传可参考:上传策略 和 流式上传资源
同步上传单个 url
同步上传单个 url 内容则使用 qsuits 的 single 模式来完成,必须加上 -s
参数才能使用该模式,命令举例如下:qsuits -d -s -process=syncupload -bucket=temp -url=http://xxx.bkt.clouddn.com/test.py -key=test.py
返回结果:http://xxx.bkt.clouddn.com/test.py test.py {"hash":"Fto5o-5ea0sNMlW_75VgGJCv2AcJ","key":"test.py"}
表示本地文件 test.py 上传到空间的 hash 值和 key,您可以选择一些上传策略再进行上传,如:-policy.deleteAfterDays=7
表示上传后七天自动删除-policy.callbackUrl=http://xxx.com/qiniu/upload/callback
表示上传结果回调到您的服务器地址
更多上传策略可参考:七牛文件上传策略,上传操作支持的更多参数参考如下的批量上传配置参数说明。
批量同步上传 url
process=syncupload
protocol=
domain=
indexes=
url-index=
host=
add-prefix=
rm-prefix=
ak=
sk=
bucket=
expires=
policy.[]=
params.[]=
check=
private
参数名 | 参数值及类型 | 含义 |
---|---|---|
process | 同步 url 内容至存储空间时设置为 syncupload | 表示同步上传 url 内容资源的操作 |
protocol | http/https | 使用 http 还是 https 访问资源进行下载(默认 http) |
domain | 域名字符串 | 当数据源数据的资源为文件名列表时,需要设置进行访问的域名(七牛存储空间域名可以使用 domainsfrom 命令查询),当指定 url-index 时无需设置 |
indexes | 字符串 | 设置输入行中 key 字段的下标(有默认值),参考数据源 indexes 设置 |
url-index | 字符串 | 通过 url 操作时需要设置的 url 索引(下标),未设置任何索引和 domain 时根据 parse 类型默认为 0 或 "url",支持需要私有签名的情况 |
host | 域名字符串 | 下载源资源时指定 host |
add-prefix | 字符串 | 表示为保存的文件名添加指定前缀 |
rm-prefix | 字符串 | 表示将得到的目标文件名去除存在的指定前缀后再作为保存的文件名 |
ak、sk | 长度40的字符串 | 七牛账号的ak、sk,通过七牛控制台个人中心获取 |
bucket | 字符串 | 上传到的资源原空间名称 |
expires | 整型数字 | 单个文件上传操作的鉴权有效期,单位 s(秒),默认为 3600 |
policy.[] | 字符串/整型数字 | 可以设置一些上传策略参数,如 policy.deleteAfterDays=7 表示七天之后自动删除文件,其他参数可参考七牛上传策略 |
params.[] | 字符串 | 上传时设置的一些变量参数,如 params.x:user=138300 表示 x:user 的信息为 138300,可参考七牛上传自定义变量 |
check | 字符串 | 进行文件存在性检查,目前可设置为 stat ,表示通过 stat 接口检查目标文件名是否存在,如果存在则不进行 fetch,而记录为 file exsits |
1、超时时间
timeout 参数可以通过全局的 timeout 来设置,参考:超时设置
2、关于 url-index
当使用 file 源且 parse=tab/csv 时 [xx-]index(ex) 设置的下标必须为整数。url-index 表示输入行含 url 形式的源文件地址,未设置的情况下则使用
key 字段加上 domain 的方式访问源文件地址,key 下标用 indexes 参数设置,参见 indexes 索引及关于 parse 和索引。
3、命令行参数方式
-process=syncupload -ak= -sk= -bucket= -url-index= ...
3. 下载/预下载文件
下载文件列表的资源到本地,或者针对 CDN 资源的场景,做一个部分字节的预热(预下载)。
- 操作需要指定数据源,默认表示从七牛空间列举文件执行操作,如非默认或需更多条件,请先配置数据源
下载单个文件
下载单个文件则使用 qsuits 的 single 模式来完成,命令如下:qsuits -d -s -process=download -url=http://xxx.bkt.clouddn.com/test.go -down-path=.
输出结果表示下载成功:test.go http://xxx.bkt.clouddn.com/test.go /Users/wubingheng/Downloads/test.go
下载操作支持的更多参数参考如下的批量下载配置参数说明。
批量下载文件
支持通过过滤器选择部分目录/文件类型等进行下载。过滤器的使用参考:文件过滤器,设置相关参数即生效,在文件下载前先过滤,非目标文件不会进行下载。
process=download
protocol=
domain=
indexes=
url-index=
host=
bytes=
queries=
pre-down=
add-prefix=
rm-prefix=
down-path=
private=
参数名 | 参数值及类型 | 含义 |
---|---|---|
process | 下载资源时设置为download | 表示资源下载操作 |
protocol | http/https | 使用 http 还是 https 访问资源进行下载(默认 http) |
domain | 域名字符串 | 当数据源数据的资源为文件名列表时,需要设置进行访问的域名(七牛存储空间域名可以使用 domainsfrom 命令查询),当指定 url-index 时无需设置 |
indexes | 字符串 | 设置输入行中 key 字段的下标(有默认值),参考数据源 indexes 设置 |
url-index | 字符串 | 通过 url 操作时需要设置的 url 索引(下标),未设置任何索引和 domain 时根据 parse 类型默认为 0 或 "url",支持需要私有签名的情况 |
host | 域名字符串 | 下载源资源时指定 host |
bytes | 字节范围 | 下载源资源时指定 range 的范围,如 0-1024 ,只有一个数字时表示起始字节,如 1024- 表示从 1024 到结尾,可用于大文件预热起始字节的场景 |
queries | 字符串 | url 的 query 参数或样式后缀,如 -w480 或 ?v=1.1&time=1565171107845 (这种形式请务必带上 ? 号,否则无效)关于 queries 参数 |
pre-down | true/false | 为 true 时表示预下载,即下载的内容不保存为文件,为 false 表示保存成本地文件,默认为 false |
add-prefix | 字符串 | 表示为保存的文件名添加指定前缀 |
rm-prefix | 字符串 | 表示将得到的目标文件名去除存在的指定前缀后再作为保存的文件名 |
down-path | 文件保存路径 | 设置下载文件的保存路径,为本地的目录名称,下载文件进行保存时必须设置 |
private | 数据源私有类型 | 是否是对私有空间资源进行下载,选择对应的私有类型,参考私有访问 |
1、超时时间
timeout 参数可以通过全局的 timeout 来设置,参考:超时设置
2、关于 queries 参数
queries 参数用于设置 url 的后缀或 ?+参数部分,资源下载可能需要下载不同格式或尺寸的如图片文件,因此可以通过一些图片处理样式或参数来设置对处理之后的图片进行下载。当设置 private(私有签名)的情况下,该参数会使用在 privateurl 操作中(因为 privateurl 操作在前,当前操作在后)。
3、关于 url-index
当使用 file 源且 parse=tab/csv 时 [xx-]index(ex) 设置的下标必须为整数。url-index 表示输入行含 url 形式的源文件地址,未设置的情况下则使用 key 字段加上 domain 的方式访问源文件地址,key 下标用 indexes 参数设置,参见 indexes 索引及关于 parse 和索引。
4、命令行参数方式
-process=download -ak= -sk= -protocol= -domain= -host= -add-prefix= -save-path= ...
4. url 私有签名
配置存储空间数据源进行空间文件访问或下载时,如果空间为私有,需要有私有签名参数(即 url 需要通过私有鉴权访问),该工具支持串联操作,即先进行对应的私有签名再进行操作,使用如下的 private 参数设置私有类型即可,如不需要进行私有签名则不设置,目前支持以下几类签名,签名时的密钥同样支持通过 -a/-d 来设置(账号使用可参考:账号设置)。private=qiniu
七牛云私有签名private=tencent
腾讯云私有签名private=aliyun
阿里云私有签名private=s3
AWS S3 私有签名private=huawei
华为云私有签名private=baidu
百度云私有签名