易语言COS分片上传写法分享分析

2021-09-29 09:52:08 浏览数 (1)

Hello大家好啊,今天给大家带来一片处女作文章!

首先是:初始化分片上传

  • .版本 2 .支持库 spec 欲上传到的路径 = “” 文件名称 = “” 存储桶访问域名 = 存储桶访问域名1 上传分区 = 上传区分1 欲上传对象路径 = 欲上传对象路径1 Header = “Host:” + 文本_取右边 (存储桶访问域名, “//”) .判断开始 (欲上传到的路径 = “”) Request = “/” .默认 Request = 欲上传到的路径 .判断结束 .判断开始 (文件名称 = “”) Request = Request + 文本_取右边 (欲上传对象路径, “”) .默认 Request = Request + 文件名称 + “.” + 文本_取右边 (欲上传对象路径, “.”) .判断结束 ' 调试输出 (“Request:” + Request) Header = Header + #换行符 + “Date:” + 时间_转为GMT格式1 (取现行时间 ()) Header = Header + #换行符 + “Content-Type:” + 取MIME (文本_取右边 (欲上传对象路径, “.”)) ' Header = Header + #换行符 + “Cache-Control: max-age=86400” ' Header = Header + #换行符 + “Content-Disposition: ” + 设置文件名称 ' Header = Header + #换行符 + “x-cos-meta-example-field: example-value” Header = Header + #换行符 + “x-cos-acl:private” Header = Header + #换行符 + “Content-Length:0 ” ' Header = Header + #换行符 + “Authorization: ” + 签名 (ID, KEY, 1, , 2, Request, , ) Header = Header + #换行符 + “Authorization:” + 签名 (“ID”, “KEY”, 1, 1, 2, Request, , ) ' Header = Header + #换行符 + “Connection: close” ' 调试输出 (“555 :” + Header) str = 编码_Utf8到Ansi (网页_访问_对象 (存储桶访问域名 + Request + “?uploads”, 1, “”, , , Header, , code, , , )) 调试输出 (str) UploadId = 文本_取出中间文本 (str, “<UploadId>”, “</UploadId>”) 调试输出 (上传文件Key, UploadId) TotalList [上传分区] = UploadId

  • 、第二步就是UploadPart啦
  • 这一步最重要的就是,将文件以字节集方式分块读入。

.版本 2

.支持库 spec

读入文件_子程序 (欲上传对象路径, b)

' a = 读入文件 (欲上传对象路径) ' ------a是文件数据 分割次数是PartNum b【】数组存放part数据

分割次数 = 取数组成员数 (b) - 1

总块数 [上传区分] = 取数组成员数 (b)

' 进度条_模拟 (画板1, 分割次数 + 1, 0, #青蓝, “文件分片完成....”, , 真)

' 取余 = 取字节集长度 (a) % 分割次数

.' 如果真 (取余 ≠ 0) ' 不能平分就单独取出余数,并删除尾部多余

' b [分割次数 + 1] = 取字节集右边 (a, 取余) ' 把尾部多余的单独储存

' a = 取字节集左边 (a, 取字节集长度 (a) - 取余) ' 让A继承A,但是长度已经成为整除分割次数的倍数

.如果真结束

.' 计次循环首 (分割次数, i)

' ' b [i] = 取字节集右边 (取字节集左边 (a, 取字节集长度 (a) ÷ 分割次数 × i), 取字节集长度 (a) ÷ 分割次数)

' b [i] = 取字节集左边 (a, 取字节集长度 (a) ÷ 分割次数 × i)

' b [i] = 取字节集右边 (b [i], 取字节集长度 (b [i]) ÷ i)

.' 计次循环尾 ()

' 以上是分割,以下是写出分割的文件

.计次循环首 (分割次数, i)

' total = total + b [i]

IP = 存储桶访问域名 + “/” + 文本_取右边 (欲上传对象路径, “”) + “?partNumber=” + 到文本 (i) + “&uploadId=” + UploadId1

ObjectPart = b [i]

Header = “Host:” + 文本_取右边 (存储桶访问域名, “//”)

' 调试输出 (“Request:” + Request)

Header = Header + #换行符 + “Date:” + 时间_转为GMT格式1 (取现行时间 ())

Header = Header + #换行符 + “Content-Type:” + 取MIME (文本_取右边 (欲上传对象路径, “.”))

' Header = Header + #换行符 + “Cache-Control: max-age=86400”

' Header = Header + #换行符 + “Content-Disposition: ” + 设置文件名称

' Header = Header + #换行符 + “x-cos-meta-example-field: example-value”

' Header = Header + #换行符 + “x-cos-acl:public-read ”

Header = Header + #换行符 + “Content-Length:” + 到文本 (5242880)

' Header = Header + #换行符 + “Content-MD5:” + 芭田网络_baes64_md5 (ObjectPart) ' 编码_BASE64编码 (到字节集 (校验_取md5 (ObjectPart, , 真)))编码_BASE64编码 (到字节集 (校验_取md5 (读入文件 (文本_取右边 (欲上传对象路径, “”)), , ))) ' 编码_BASE64编码 (到字节集 (校验_取md5 (到字节集 (字节集_字节集到十六进制 (ObjectPart))))) 编码_BASE64编码 (到字节集 (校验_取md5 (ObjectPart, , 真)))

' Header = Header + #换行符 + “Authorization: ” + 签名 (ID, KEY, 1, , 2, Request, , )

Header = Header + #换行符 + “Authorization:” + 签名 (ID, KEY, 1, , 3, “/” + 文本_取右边 (欲上传对象路径, “”)) ' 总签名 () ' 签名 (ID, KEY, 1, , 3, “” + 文本_取右边 (欲上传对象路径, “”)) ' 签名 (“ID”, “KEY”, 1, 1, 2, Request, , )

Header = Header + #换行符 + “Connection: close”

' str = 编码_Utf8到Ansi (网页_访问 (IP, 3, , , , Header, , , 读入文件 (文本_取右边 (欲上传对象路径, “”)), , , , ))

str = 编码_Utf8到Ansi (网页_访问_对象 (IP, 3, , , , Header, res, code, , ObjectPart, ))

' str = 编码_Utf8到Ansi (网页_访问 (IP, 3, , , , Header, , , 读入文件 (文本_取右边 (欲上传对象路径, “”)), , , , ))

' str = 编码_Utf8到Ansi (网页_访问_对象 (IP, 3, , , , Header, res, code, , ObjectPart, ))

Etag = 文本_取出中间文本 (res, #E前, #E后)

.如果真 (Etag = “”)

' 如果真 (二次效验 = 1)

.计次循环首 (舍弃, q)

.如果真 (文本_取右边 (欲上传对象路径, “”) = 舍弃文件 [q])

二次效验 = 2

跳出循环 ()

.如果真结束

二次效验 = 1

.计次循环尾 ()

.如果真 (二次效验 = 2)

跳出循环 ()

.如果真结束

.判断循环首 (Etag = “”)

str = 编码_Utf8到Ansi (网页_访问_对象 (IP, 3, , , , Header, res, code, , ObjectPart, ))

Etag = 文本_取出中间文本 (res, #E前, #E后) ' ================== ' ======================安全

.判断循环尾 ()

.' 如果真 (Etag ≠ “”)

' 跳出循环 ()

.如果真结束

'

' 信息框 (文本_取右边 (欲上传对象路径, “”) + “的分片” + 到文本 (i), 0, , )

.如果真结束

Etag = 文本_替换 (#中间XML, , , , “标签号”, Etag)

Etag = 文本_替换 (Etag, , , , “分片编号”, 到文本 (i))

提交xml = 提交xml + #换行符 + Etag

' 进度条_模拟 (画板1, 分割次数 + 1, i, #青蓝, “文件分片已上传:....”, , 真)

调试输出 (“str” + str + res)

块数已上传 [上传区分] = i

.计次循环尾 ()

.版本 2

IP = 存储桶访问域名 + “/” + 文本_取右边 (欲上传对象路径, “”) + “?partNumber=” + 到文本 (i) + “&uploadId=” + UploadId1

ObjectPart = b [分割次数 + 1]

Header = “Host:” + 文本_取右边 (存储桶访问域名, “//”)

' 调试输出 (“Request:” + Request)

Header = Header + #换行符 + “Date:” + 时间_转为GMT格式1 (取现行时间 ())

Header = Header + #换行符 + “Content-Type:” + 取MIME (文本_取右边 (欲上传对象路径, “.”))

' Header = Header + #换行符 + “Cache-Control: max-age=86400”

' Header = Header + #换行符 + “Content-Disposition: ” + 设置文件名称

' Header = Header + #换行符 + “x-cos-meta-example-field: example-value”

' Header = Header + #换行符 + “x-cos-acl:public-read ”

Header = Header + #换行符 + “Content-Length:” + 到文本 (取字节集长度 (ObjectPart))

' Header = Header + #换行符 + “Content-MD5:” + 芭田网络_baes64_md5 (ObjectPart) ' 编码_BASE64编码 (到字节集 (校验_取md5 (ObjectPart, , 真)))编码_BASE64编码 (到字节集 (校验_取md5 (读入文件 (文本_取右边 (欲上传对象路径, “”)), , ))) ' 编码_BASE64编码 (到字节集 (校验_取md5 (到字节集 (字节集_字节集到十六进制 (ObjectPart))))) 编码_BASE64编码 (到字节集 (校验_取md5 (ObjectPart, , 真)))

' Header = Header + #换行符 + “Authorization: ” + 签名 (ID, KEY, 1, , 2, Request, , )

Header = Header + #换行符 + “Authorization:” + 签名 (ID, KEY, 1, , 3, “/” + 文本_取右边 (欲上传对象路径, “”)) ' 总签名 () ' 签名 (ID, KEY, 1, , 3, “” + 文本_取右边 (欲上传对象路径, “”)) ' 签名 (“ID”, “KEY”, 1, 1, 2, Request, , )

Header = Header + #换行符 + “Connection: close”

' str = 编码_Utf8到Ansi (网页_访问 (IP, 3, , , , Header, , , 读入文件 (文本_取右边 (欲上传对象路径, “”)), , , , ))

str = 编码_Utf8到Ansi (网页_访问_对象 (IP, 3, , , , Header, res, code, , ObjectPart, ))

' 上传标识 = 0

' 上传数组数 = 0

Etag = 文本_取出中间文本 (res, #E前, #E后)

Etag = 文本_替换 (#尾XML, , , , “标签号”, Etag)

Etag = 文本_替换 (Etag, , , , “分片编号”, 到文本 (i))

最后一步,就是CompleteUpload

.版本 2

IP = 存储桶访问域名 + “/” + 文本_取右边 (欲上传对象路径, “”) + “?uploadId=” + UploadID

Header = “Host:” + 文本_取右边 (存储桶访问域名, “//”)

' 调试输出 (“Request:” + Request)

Header = Header + #换行符 + “Date:” + 时间_转为GMT格式1 (取现行时间 ())

Header = Header + #换行符 + “Content-Type:application/xml”

' Header = Header + #换行符 + “Cache-Control: max-age=86400”

' Header = Header + #换行符 + “Content-Disposition: ” + 设置文件名称

' Header = Header + #换行符 + “x-cos-meta-example-field: example-value”

' Header = Header + #换行符 + “x-cos-acl:public-read ”

Header = Header + #换行符 + “Content-Length:” + 到文本 (取文本长度 (XML [上传区分_局变]))

' Header = Header + #换行符 + “Content-MD5:” + 芭田网络_baes64_md5 (ObjectPart) ' 编码_BASE64编码 (到字节集 (校验_取md5 (ObjectPart, , 真)))编码_BASE64编码 (到字节集 (校验_取md5 (读入文件 (文本_取右边 (欲上传对象路径, “”)), , ))) ' 编码_BASE64编码 (到字节集 (校验_取md5 (到字节集 (字节集_字节集到十六进制 (ObjectPart))))) 编码_BASE64编码 (到字节集 (校验_取md5 (ObjectPart, , 真)))

' Header = Header + #换行符 + “Authorization: ” + 签名 (ID, KEY, 1, , 2, Request, , )

Header = Header + #换行符 + “Authorization:” + 签名 (“ID”, “KEY, 1, 1, 2, “/” + 文本_取右边 (欲上传对象路径, “”), , )

' 签名 (ID, KEY, 1, , 3, “” + 文本_取右边 (欲上传对象路径, “”)) ' 签名 (“ID”, “KEY”, 1, 1, 2, Request, , )

Header = Header + #换行符 + “Connection: close”

' str = 编码_Utf8到Ansi (网页_访问 (IP, 3, , , , Header, , , 读入文件 (文本_取右边 (欲上传对象路径, “”)), , , , ))

str = 编码_Utf8到Ansi (网页_访问_对象 (IP, 1, XML [上传区分_局变], , , Header, , code, , , ))

0 人点赞