七牛云存储文件上传-基

上传文件  时间:2021-02-21  阅读:()

础上传服务@七牛云存储主要内容七牛云存储上传文件的基础知识七牛云存储变量(魔法变量和扩展变量)七牛云存储命名上传文件的方式简单文件上传-基本步骤简单文件上传-不指定上传文件key简单文件上传-指定上传文件key简单文件上传-使用SaveKey作为文件名简单文件上传-使用变量作为SaveKey简单文件上传-使用ReturnBody自定义返回内容简单文件上传-文件同名覆盖上传简单文件上传-限制文件的上传大小简单文件上传-限制文件的上传类型简单文件上传-自动检测文件类型简单文件上传-使用EndUser字段标识文件属主简单文件上传-带CRC32校验码的文件上传IE系列浏览器修复回复的JSON字符串被当作文件下载问题七牛云存储上传文件的基本知识3元数据库业务服务器采集终端数据处理集群可穿戴设备移动应用海量分布式存储服务数据上传服务数据下载服务监控与自动报警系统日志与统计系统自动化部署系统核心服务支撑系统服务端移动端七牛云存储服务器客户业务服务器上传完成通知获取元数据上传下载写入读取处理读写元数据七牛云存储上传文件的基本知识4七牛云存储上传文件的基本知识5七牛云存储的文件上传采用标准的multipart/form-data表单来进行文件上传.

可以在表单的参数中指定文件要保存的名字(文件key),多个扩展变量,文件二进制内容,文件内容CRC32校验码,accept参数(用于修复IE的Bug)以及最重要的用于七牛云存储服务器进行访问权限控制和PutPolicy参数解析的上传token字符串.
http://developer.
qiniu.
com/docs/v6/api/overview/up/form-upload.
html最简单的上传表单可以只有token和要上传的文件内容file这两个参数.
上传文件表单中的上传token需要从业务服务器获取,业务服务器指定客户端文件上传所采用的PutPolicy,并结合AccessKey和SecretKey来生成客户端文件上传所需要的token.
上传token的第三部分是PutPolicy的JSON格式字符串经过URL安全的Base64编码后所得,基本上是PutPolicy的明文.
七牛云存储上传文件的基本知识6注意表单参数和PutPolicy参数的区别.
表单参数是HTTPPOST请求的参数.
PutPolicy参数是上传策略PutPolicy里面的参数,二者不可混淆.
简单来讲,表单参数就是HTTP标准参数,而PutPolicy参数则是指定了这个表单和七牛云存储之间关系的参数.
PutPolicy包含在上传的token里面,而上传token又是表单参数中不可或缺的一个.
无论是表单参数还是PutPolicy参数都可以根据自己实际开发过程中的需求进行合理的组合,也就是说每一个文件上传的表单中所涉及到的表单参数和PutPolicy参数都是七牛云存储所支持的表单参数和PutPolicy参数集合的一个子集.
七牛云存储文件上传之后的回复永远都是JSON格式的字符串,回复的内容根据实际上传时所设置的参数不同而不同,但是上传失败时返回的回复格式都是一个{"error":"realuploaderrormessage"}这样的字符串.
七牛云存储上传文件的基本知识7标准HTML文件上传表单"/>"/>"type="hidden"value=""/>"type="hidden"value=""/>七牛云存储上传文件的基本知识8参数名类型必填描述tokenstring是文件上传凭证,由业务服务器颁发给客户端.
必须是正确的上传凭证,否则返回401错误.
filefile是文件本身keystring否指定七牛保存该文件时使用的名字,必须是UTF8编码.
在使用覆盖上传的时候,必须指定该参数.
x:extra_paramstring否扩展参数,由用户自己提供,必须以x:开头,可以指定的个数不限.
crc32string否文件内容的crc32校验码acceptstring否指定为text/plain时用于修正低版本IE的Bug.
否则七牛返回application/json格式.

七牛云存储变量(魔法变量和扩展变量)91.
你想在上传文件后从七牛服务器获取更多关于上传文件的信息吗2.
你想在上传文件的表单里面指定更多的自定义信息吗对于第1种需求,七牛云存储提供了魔法变量功能.
http://developer.
qiniu.
com/docs/v6/api/overview/up/response/vars.
html#magicvar对于第2种需求,七牛云存储提供了自定义变量功能.
http://developer.
qiniu.
com/docs/v6/api/overview/up/response/vars.
html#xvar魔法变量是由七牛云存储提供的,你只需要指定需要的魔法变量的名字即可,七牛云存储服务器会自动帮你填充魔法变量的值.
自定义变量又叫做扩展变量,你可以自己指定任意多个自定义变量,并指定自定义变量的值,七牛服务器会原封不动地返回这些参数.
七牛云存储命名上传文件的方式10文件上传之后,七牛云存储对文件的命名遵循以下的规则:1.
文件上传的POST请求中,如果指定了参数key,那么以key来命名文件.
2.
文件上传的POST请求中,没有指定参数key,但是上传策略PutPolicy里面指定了saveKey参数,那么以saveKey命名文件.
3.
文件上传的POST请求中,如果没有指定参数key,而且在上传策略PutPolicy里面也没有指定saveKey参数,那么七牛云存储服务器会使用根据文件内容计算得来的hash值作为文件的名字.
备注:上面的命名方式是按顺序检测的,一旦确认了文件的名字,就不会再检测后面的规则.
比如同时指定了表单参数key和上传策略参数saveKey,那么也是以key来命名上传的文件.
七牛云存储服务器会对每个上传的文件都会计算它的hash值,所以上传的文件一定是有名字的.
简单文件上传-基本步骤11上传文件基本步骤(不含七牛云存储服务器和业务服务器交互的部分):1.
业务服务器颁发上传token给文件上传端2.
文件上传端构建文件上传表单,并填充请求参数3.
文件上传端向七牛云存储服务器发送HTTPPOST请求4.
文件上传端解析七牛云存储服务器返回的回复信息备注:最简单的上传请求必须包含上传token和所要上传的文件内容.
简单文件上传-不指定上传文件key12本例是最简单的文件上传示例:步骤:1.
业务服务器生成上传token2.
创建包含上传token和文件内容的表单3.
向七牛服务器发送Post请求//业务服务器生成上传tokenrequire_oncelib/qiniu/rs.
php");Qiniu_SetKeys($Qiniu_AccessKey,$Qiniu_SecretKey);$putPolicynewQiniu_RS_PutPolicy($Qiniu_Public_Bucket);$tokenputPolicyToken(null);//文件上传端表单"简单文件上传-指定上传文件key13本例是在刚刚的例子基础上,加上了请求参数key,一旦设置了参数key,那么七牛会使用这个key来给上传的文件命名,如果这个key为空字符串,那么文件命名就是空字符串:步骤:1.
业务服务器生成上传token2.
创建包含上传token,文件名key和文件内容的表单3.
向七牛服务器发送Post请求//业务服务器生成token的方式不变//文件上传端表单"简单文件上传-使用SaveKey作为文件名14本例演示在表单中不指定文件key的情况下,如何使用上传策略PutPolicy中的参数SaveKey来作为文件的名字:步骤:1.
业务服务器使用指定了SaveKey的PutPolicy生成上传token2.
创建包含上传token和文件内容的表单3.
向七牛服务器发送Post请求//业务服务器生成token的方式不变require_oncelib/qiniu/rs.
php");Qiniu_SetKeys($Qiniu_AccessKey,$Qiniu_SecretKey);$putPolicynewQiniu_RS_PutPolicy($Qiniu_Public_Bucket);$putPolicySaveKeyqiniu_cloud_storage_9me();$tokenputPolicyToken(null);//文件上传端表单文件上传表单中不指定key参数即可.
简单文件上传-使用变量作为SaveKey15上一个例子中,我们演示了如何使用SaveKey作为文件的名字,这里我们还可以看一下,如何使用变量来组成文件的名字.
变量当然包括魔法变量何扩展变量了.
步骤:1.
使用魔法变量和扩展变量组合成一个新的字符串作为SaveKey的值2.
业务服务器使用指定了SaveKey的PutPolicy生成上传token3.
创建包含上传token,扩展参数和文件内容的表单4.
向七牛服务器发送Post请求require_oncelib/qiniu/rs.
php");Qiniu_SetKeys($Qiniu_AccessKey,$Qiniu_SecretKey);$putPolicynewQiniu_RS_PutPolicy($Qiniu_Public_Bucket);$putPolicySaveKeyx:saveKeyEx)$(fname)";$tokenputPolicyToken(null);上面的SaveKey由魔法变量$(fname)和扩展变量$(x:saveKeyEx)组成.
简单文件上传-使用变量作为SaveKey16"魔法变量是由七牛云存储默认提供的,自定义变量或者称为扩展变量是由用户自定义表单中提交的,比如上面的x:saveKeyEx,这里扩展变量必须以x:开头,后面的部分命名方式遵循一般变量命名即可.
这个x:就告诉了七牛云存储的服务器,这个是扩展变量,否则的话,表单中任何多余的参数都会被七牛云存储服务器忽略.
魔法变量的可用范围,请参考:http://developer.
qiniu.
com/docs/v6/api/overview/up/response/vars.
html#magicvar简单文件上传-使用ReturnBody自定义返回内容17上面的例子中,我们看到了七牛云存储服务器返回给上传端的信息都是一个只有文件hash和key的JSON字符串.
那如何才能获取更多的关于文件的信息呢这个就需要设置上传策略PutPolicy里面的参数ReturnBody了.
在ReturnBody里面可以使用七牛云存储支持的魔法变量和自定义变量来组成需要返回的内容.

组织的格式一般为JSON数据格式或者URL参数格式.
URL参数格式:fname=$(fname)&fszie=$(fsize)&bucket=$(bucket)&exParam1=$(x:exParam1)JSON数据格式:{"fname"=>"$(fname)","fsize"=>"$(fsize)","bucket"=>"$(bucket)","exParam1"=>"$(x:exParam1)",}简单文件上传-文件同名覆盖上传18默认情况下,如果以指定key或者saveKey的方式上传一个和已经存在于空间中的文件名字相同而且内容相同的文件的时候,七牛服务器会根据新上传的文件内容的hash推断出该文件已经存在,不会覆写已有的文件,如果上传的文件被指定的名字和空间中已有文件的名字相同,但是内容不同时,会返回如下错误信息{"error":"fileexists"}.
简而言之,七牛云存储默认不会轻易地让你覆盖已有的文件的.
那么,如果真的有这种文件内容不同,但是需要指定相同名字的覆盖上传需求怎么办呢很简单,设置PutPolicy里面的scope和insertOnly参数,并且在POST请求里面指定需要覆盖的文件的key.
在覆盖上传里面,scope的值需要设置为bucket:key这样的方式,这个key和POST请求里面的key值相同,另外必须保证insertOnly为0,保证了这些,文件就可以覆盖上传了.
简单文件上传-文件同名覆盖上传19覆盖上传文件的步骤:1.
按照bucket:key的方式设置PutPolicy里面的scope参数,另外设置insertOnly参数为0.
2.
构建包含指定要覆盖的文件的key,文件内容和上传token的表单3.
向七牛云存储服务器提交HTTPPOST请求4.
解析七牛云存储服务器返回的回复.
//生成上传tokenQiniu_SetKeys($Qiniu_AccessKey,$Qiniu_SecretKey);$putPolicy=newQiniu_RS_PutPolicy($Qiniu_Public_Bucket);$putPolicy->Scope=$Qiniu_Public_Bucket.
":".
$keyToOverwrite;$putPolicy->InsertOnly=0;$token=$putPolicy->Token(null);简单文件上传-文件同名覆盖上传20//需要的表单格式"/>"/>备注:1.
上传策略里面的scope必须按照bucket:key的格式指定,表示保存的文件要覆盖bucket所代表空间里面名字为key的文件.
2.
上传策略里面的insertOnly必须为0,否则即使scope如第1步那样指定,也不能覆盖已有的文件.
3.
上传策略里面的key和请求表单里面的参数key必须值相同才能覆盖.
简单文件上传-限制文件的上传大小21如果你希望用户上传的文件有大小限制,就像我们平时开发web应用时遇到的情况一样,你可以在上传策略PutPolicy里面指定上传文件的大小限制.
在PutPolicy里面,你可以指定fSizeLimit参数来限定上传的文件不能超过这个大小,这个参数是一个整数,单位是字节.
比如限制上传的文件不能超过1KB,那么fSizeLimit就设置为1024.
上传的文件超过fSizeLimit限制的情况下,会被判定为上传失败,并且返回413状态码.
默认情况下,七牛不限定上传文件的大小.
只要你敢传,七牛就有空间存储.

这个得益于七牛独特的分布式存储架构体系.
七牛的文件存储并不是以文件的原始状态存在,而是将文件切割为块,每个块有固定的大小,这样一来无论多大的文件都可以存储.
简单文件上传-限制文件的上传类型22如果你希望用户只能上传图片,而不是音频或者视频,那么这个时候你可以设置上传策略PutPolicy的参数mimeLimit,用来限制用户可以上传的文件的类型.
一旦你设置了这个参数,七牛服务器会侦测上传文件的类型,并且来和你设置的规则比对,如果匹配就存储,否则返回{"error":"limitedmimeType:thisfiletypeisforbiddentoupload"}.
这个mimeLimit参数的用法如下(不可以同时指定允许和不允许的文件类型):指定允许上面的文件类型:1.
使用通配符,比如image/*表示允许上传所有图片类型的文件.
2.
分别指定允许上传的文件类型,用分号(;)隔开,比如image/jpeg;image/png表示只允许上传jpeg和png格式的图片.
指定不允许上传的文件类型:1.
使用通配符,比如!
image/*表示不允许所有图片类型的数据.
2.
分别指定不允许上传的文件类型,用分号(;)隔开,比如!
application/json;text/plain表示不允许上传json格式数据和纯文本.
简单文件上传-自动检测文件类型23上传策略里面有一个参数叫做detectMime,可以用来开启七牛服务器自动检测上传文件的MimeType,这个参数默认为0.
当被设置为非0值时,七牛服务器会忽略上传端指定的文件MimeType而是遵循下面的规则自动侦测文件的MimeType.
当然如果上传端也没有指定文件的MimeType的时候,也会遵循下面的规则来侦测文件的MimeType.
侦测规则:1.
检查文件的扩展名(原始文件名)2.
检查key的扩展名3.
侦测内容如果上面的步骤,都无法判断出文件的MimeType,那么默认使用application/octect-stream来作为文件的MimeType.
备注:上面的侦测动作是在七牛云存储服务器进行的.
一般你不需要指定上传文件的MimeType,七牛服务器会自动判断,如果需要指定也是以HTTPMultipartData的Content-Type来指定的,这个在SDK中已经实现了.
你只需要传入相应参数即可.
简单文件上传-使用EndUser字段标志文件属主24上传策略PutPolicy里面有一个字段叫做endUser,这个字段一般来讲没有什么太大的用处,因为七牛支持扩展参数,如果有什么额外的自定义需求完全可以使用扩展参数来解决,但是为什么还存在endUser这个字段呢一般来讲,这个字段用在App开发里面,可以用来表示这个图片或者视频是谁发的,用这个endUser值来打个水印什么的.
如果你在文件上传的时候指定了这个PutPolicy参数,你可以通过魔法变量(endUser)来获取到它的值.
require_oncelib/qiniu/rs.
php");Qiniu_SetKeys($Qiniu_AccessKey,$Qiniu_SecretKey);$putPolicynewQiniu_RS_PutPolicy($Qiniu_Public_Bucket);$putPolicy-‐>EndUser="jemygraw";$putPolicy-‐>ReturnBody="{\"endUser\endUser)}";$tokenputPolicyToken(null);简单文件上传-带CRC32校验码的文件上传25如果你对你上传的文件的完整性十分关心或者你的用户文件上传环境太恶劣的情况下,你可以在HTTP的POST请求中添加一个请求参数crc32,这个参数的值就是你本地计算这个文件内容的crc32的值,七牛会根据你提供的crc32的值来和七牛服务器对上传的文件重新计算crc32得到的值做比对,如果符合,则返回上传文件成功,否则判定为失败并返回错误{"error":"invalidcrc32"}.
crc32是一个HTTP上传POST请求参数,它的值是一个10进制的整数.
其实还有很多种方式来保证上传的文件一个字节不少,比如七牛的hash算法.

raksmart:全新cloud云服务器系列测评,告诉你raksmart新产品效果好不好

2021年6月底,raksmart开发出来的新产品“cloud-云服务器”正式上线对外售卖,当前只有美国硅谷机房(或许以后会有其他数据中心加入)可供选择。或许你会问raksmart云服务器怎么样啊、raksm云服务器好不好、网络速度快不好之类的废话(不实测的话),本着主机测评趟雷、大家受益的原则,先开一个给大家测评一下!官方网站:https://www.raksmart.com云服务器的说明:底层...

ShockHosting日本机房VPS测试点评

这个月11号ShockHosting发了个新上日本东京机房的邮件,并且表示其他机房可以申请转移到日本,刚好赵容手里有个美国的也没数据就发工单申请新开了一个,这里做个简单的测试,方便大家参考。ShockHosting成立于2013年,目前提供的VPS主机可以选择11个数据中心,包括美国洛杉矶、芝加哥、达拉斯、杰克逊维尔、新泽西、澳大利亚、新加坡、日本、荷兰和英国等。官方网站:https://shoc...

CloudCone闪购优惠洛杉矶MC机房VPS月$1.99 便宜可随意删除重开

CloudCone商家我们很多喜欢低价便宜VPS主机的肯定是熟悉的,个人不是特别喜欢他。因为我之前测试过几次,开通的机器IP都是不通的,需要删除且开通好几次才能得到一个可用的IP地址。当然他们家的优势也是有的,就是价格确实便宜,而且还支持删除重新开通,而且机房只有一个洛杉矶MC。实话,如果他们家能多几个机房,保持现在的特点,还是有很多市场的。CloudCone是来自美国的主机销售商,成立于2017...

上传文件为你推荐
快递打印快递单可以自己打印吗找不到光驱电脑找不到光驱怎么办阿?在线漏洞检测漏洞扫描工具有哪些依赖注入Spring 的依赖注入是什么意思?手机区号手机号码+86是移动区号还是联通的区号?开机滚动条谁会调开机的滚动条ejb开发什么是ejb?宕机宕机是什么意思iphone6上市时间苹果6什么时候出?blogcn哪种博客更好...sina.baidu.blogcn还是.............?
游戏服务器租用 godaddy域名解析 Dedicated wavecom 韩国电信 英语简历模板word 2017年黑色星期五 服务器cpu性能排行 天猫双十一抢红包 e蜗 微信收钱 刀片式服务器 域名评估 美国网站服务器 vip域名 爱奇艺会员免费试用 如何建立邮箱 银盘服务 空间租赁 移动服务器托管 更多