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, , , ))