python域名正则表达式_python 正则 域名

关于

python 正则 域名的搜索结果

回答

详细解答可以参考官方帮助文档

适用场景

表单上传是指使用OSS API中的PostObject请求来完成Object的上传,上传的Object不能超过5GB。表单上传非常适合嵌入在HTML网页中来上传Object,比较常见的场景是网站应用,以招聘网站为例:

不使用表单上传

表单上传

流程对比

网站用户上传简历。

网站服务器回应上传页面。

简历被上传到网站服务器。

网站服务器再将简历上传到OSS。

网站用户上传简历。

网站服务器回应上传页面。

简历上传到OSS。

上传限制

大小限制:使用表单上传时,Object不能超过5GB。

命名限制:

使用UTF-8编码。

长度必须在1–1023字节之间。

不能以正斜线(/)或者反斜线(\)字符开头。

优势

从流程上来说,少了一步转发,更加方便。

从架构上来说,原来的上传都统一走网站服务器,上传量过大时,需要扩容网站服务器。采用表单上传后,直接从客户端上传数据到OSS。上传量过大时,压力都在OSS上,由OSS来保障服务质量。

安全及授权

为防止第三方未经授权向开发者的Bucket上传Object,OSS提供了Bucket和Object级别的访问权限控制,详情请参见OSS细粒度的权限控制。

为了授权给第三方上传,使用的是PostPolicy方法,详情请参见PostObject。

使用表单上传的基本步骤

构建一个Post Policy。 Post请求的Policy表单域用于验证请求的合法性。例如可以指定上传的大小,可以指定上传的Object名字等,上传成功后客户端跳转到的URL,上传成功后客户端收到的状态码。具体请参考Post Policy。

例如如下Policy,网站用户能上传的过期时间是2115-01-27T10:56:19Z(这里为了测试成功写的过期时间很长,实际使用中不建议这样设置),能上传的文件最大为104857600字节。

以Python代码为例子,Policy是json格式的字符串。

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 104857600]]}"

将Policy字符串进行base64编码。

用OSS的AccessKeySecret对base64编码后的Policy进行签名。

构建上传的HTML页面。

打开HTML页面,选择文件上传。

完整Python代码示例:

#coding=utf8

import md5

import hashlib

import base64

import hmac

from optparse import OptionParser

def convert_base64(input):

return base64.b64encode(input)

def get_sign_policy(key, policy):

return base64.b64encode(hmac.new(key, policy, hashlib.sha1).digest())

def get_form(bucket, endpoint, access_key_id, access_key_secret, out):

#1 构建一个Post Policy

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 1048576]]}"

print("policy: %s" % policy)

#2 将Policy字符串进行base64编码

base64policy = convert_base64(policy)

print("base64_encode_policy: %s" % base64policy)

#3 用OSS的AccessKeySecret对编码后的Policy进行签名

signature = get_sign_policy(access_key_secret, base64policy)

#4 构建上传的HTML页面

form = '''

OSS表单上传(PostObject)

''' % (bucket, endpoint, access_key_id, base64policy, signature)

f = open(out, "wb")

f.write(form)

f.close()

print("form is saved into %s" % out)

if __name__ == '__main__':

parser = OptionParser()

parser.add_option("", "--bucket", dest="bucket", help="specify ")

parser.add_option("", "--endpoint", dest="endpoint", help="specify")

parser.add_option("", "--id", dest="id", help="access_key_id")

parser.add_option("", "--key", dest="key", help="access_key_secret")

parser.add_option("", "--out", dest="out", help="out put form")

(opts, args) = parser.parse_args()

if opts.bucket and opts.endpoint and opts.id and opts.key and opts.out:

get_form(opts.bucket, opts.endpoint, opts.id, opts.key, opts.out)

else:

print "python %s --bucket=your-bucket --endpoint=oss-cn-hangzhou.aliyuncs.com --id=your-access-key-id --key=your-access-key-secret --out=out-put-form-name" % __file__

将此段代码保存为post_object.py,然后用python post_object.py来运行。

用法:

python post_object.py --bucket=您的Bucket --endpoint=Bucket对应的OSS域名 --id=您的AccessKeyId --key=您的AccessKeySecret --out=输出的文件名

示例:

python post_object.py --bucket=oss-sample --endpoint=oss-cn-hangzhou.aliyuncs.com --id=tphpxp --key=ZQNJzf4QJRkrH4 --out=post.html

说明

构建的表单中success_action_redirect value=http://oss.aliyun.com 表示上传成功后跳转的页面。可以替换成您自己的页面。

构建的表单中success_action_status value=201表示的是上传成功后返回的状态码为201。可以替换。

假如指定生成的HTML文件为post.html,打开post.html,选择文件上传。在这个例子中如果成功则会跳转到OSS的主页面。

功能使用参考

API:PostObject

Java SDK:表单上传

最佳实践

Web端直传实践

跨域资源共享(CORS)

2019-12-01 23:12:30

0 浏览量

回答数 0

回答

详细解答可以参考官方帮助文档

适用场景

表单上传是指使用OSS API中的PostObject请求来完成Object的上传,上传的Object不能超过5GB。表单上传非常适合嵌入在HTML网页中来上传Object,比较常见的场景是网站应用,以招聘网站为例:

不使用表单上传

表单上传

流程对比

网站用户上传简历。

网站服务器回应上传页面。

简历被上传到网站服务器。

网站服务器再将简历上传到OSS。

网站用户上传简历。

网站服务器回应上传页面。

简历上传到OSS。

上传限制

大小限制:使用表单上传时,Object不能超过5GB。

命名限制:

使用UTF-8编码。

长度必须在1–1023字节之间。

不能以正斜线(/)或者反斜线(\)字符开头。

优势

从流程上来说,少了一步转发,更加方便。

从架构上来说,原来的上传都统一走网站服务器,上传量过大时,需要扩容网站服务器。采用表单上传后,直接从客户端上传数据到OSS。上传量过大时,压力都在OSS上,由OSS来保障服务质量。

安全及授权

为防止第三方未经授权向开发者的Bucket上传Object,OSS提供了Bucket和Object级别的访问权限控制,详情请参见OSS细粒度的权限控制。

为了授权给第三方上传,使用的是PostPolicy方法,详情请参见PostObject。

使用表单上传的基本步骤

构建一个Post Policy。 Post请求的Policy表单域用于验证请求的合法性。例如可以指定上传的大小,可以指定上传的Object名字等,上传成功后客户端跳转到的URL,上传成功后客户端收到的状态码。具体请参考Post Policy。

例如如下Policy,网站用户能上传的过期时间是2115-01-27T10:56:19Z(这里为了测试成功写的过期时间很长,实际使用中不建议这样设置),能上传的文件最大为104857600字节。

以Python代码为例子,Policy是json格式的字符串。

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 104857600]]}"

将Policy字符串进行base64编码。

用OSS的AccessKeySecret对base64编码后的Policy进行签名。

构建上传的HTML页面。

打开HTML页面,选择文件上传。

完整Python代码示例:

#coding=utf8

import md5

import hashlib

import base64

import hmac

from optparse import OptionParser

def convert_base64(input):

return base64.b64encode(input)

def get_sign_policy(key, policy):

return base64.b64encode(hmac.new(key, policy, hashlib.sha1).digest())

def get_form(bucket, endpoint, access_key_id, access_key_secret, out):

#1 构建一个Post Policy

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 1048576]]}"

print("policy: %s" % policy)

#2 将Policy字符串进行base64编码

base64policy = convert_base64(policy)

print("base64_encode_policy: %s" % base64policy)

#3 用OSS的AccessKeySecret对编码后的Policy进行签名

signature = get_sign_policy(access_key_secret, base64policy)

#4 构建上传的HTML页面

form = '''

OSS表单上传(PostObject)

''' % (bucket, endpoint, access_key_id, base64policy, signature)

f = open(out, "wb")

f.write(form)

f.close()

print("form is saved into %s" % out)

if __name__ == '__main__':

parser = OptionParser()

parser.add_option("", "--bucket", dest="bucket", help="specify ")

parser.add_option("", "--endpoint", dest="endpoint", help="specify")

parser.add_option("", "--id", dest="id", help="access_key_id")

parser.add_option("", "--key", dest="key", help="access_key_secret")

parser.add_option("", "--out", dest="out", help="out put form")

(opts, args) = parser.parse_args()

if opts.bucket and opts.endpoint and opts.id and opts.key and opts.out:

get_form(opts.bucket, opts.endpoint, opts.id, opts.key, opts.out)

else:

print "python %s --bucket=your-bucket --endpoint=oss-cn-hangzhou.aliyuncs.com --id=your-access-key-id --key=your-access-key-secret --out=out-put-form-name" % __file__

将此段代码保存为post_object.py,然后用python post_object.py来运行。

用法:

python post_object.py --bucket=您的Bucket --endpoint=Bucket对应的OSS域名 --id=您的AccessKeyId --key=您的AccessKeySecret --out=输出的文件名

示例:

python post_object.py --bucket=oss-sample --endpoint=oss-cn-hangzhou.aliyuncs.com --id=tphpxp --key=ZQNJzf4QJRkrH4 --out=post.html

说明

构建的表单中success_action_redirect value=http://oss.aliyun.com 表示上传成功后跳转的页面。可以替换成您自己的页面。

构建的表单中success_action_status value=201表示的是上传成功后返回的状态码为201。可以替换。

假如指定生成的HTML文件为post.html,打开post.html,选择文件上传。在这个例子中如果成功则会跳转到OSS的主页面。

功能使用参考

API:PostObject

Java SDK:表单上传

最佳实践

Web端直传实践

跨域资源共享(CORS)

2019-12-01 23:12:29

0 浏览量

回答数 0

回答

详细解答可以参考官方帮助文档

适用场景

表单上传是指使用OSS API中的PostObject请求来完成Object的上传,上传的Object不能超过5GB。表单上传非常适合嵌入在HTML网页中来上传Object,比较常见的场景是网站应用,以招聘网站为例:

不使用表单上传

表单上传

流程对比

网站用户上传简历。

网站服务器回应上传页面。

简历被上传到网站服务器。

网站服务器再将简历上传到OSS。

网站用户上传简历。

网站服务器回应上传页面。

简历上传到OSS。

上传限制

大小限制:使用表单上传时,Object不能超过5GB。

命名限制:

使用UTF-8编码。

长度必须在1–1023字节之间。

不能以正斜线(/)或者反斜线(\)字符开头。

优势

从流程上来说,少了一步转发,更加方便。

从架构上来说,原来的上传都统一走网站服务器,上传量过大时,需要扩容网站服务器。采用表单上传后,直接从客户端上传数据到OSS。上传量过大时,压力都在OSS上,由OSS来保障服务质量。

安全及授权

为防止第三方未经授权向开发者的Bucket上传Object,OSS提供了Bucket和Object级别的访问权限控制,详情请参见OSS细粒度的权限控制。

为了授权给第三方上传,使用的是PostPolicy方法,详情请参见PostObject。

使用表单上传的基本步骤

构建一个Post Policy。 Post请求的Policy表单域用于验证请求的合法性。例如可以指定上传的大小,可以指定上传的Object名字等,上传成功后客户端跳转到的URL,上传成功后客户端收到的状态码。具体请参考Post Policy。

例如如下Policy,网站用户能上传的过期时间是2115-01-27T10:56:19Z(这里为了测试成功写的过期时间很长,实际使用中不建议这样设置),能上传的文件最大为104857600字节。

以Python代码为例子,Policy是json格式的字符串。

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 104857600]]}"

将Policy字符串进行base64编码。

用OSS的AccessKeySecret对base64编码后的Policy进行签名。

构建上传的HTML页面。

打开HTML页面,选择文件上传。

完整Python代码示例:

#coding=utf8

import md5

import hashlib

import base64

import hmac

from optparse import OptionParser

def convert_base64(input):

return base64.b64encode(input)

def get_sign_policy(key, policy):

return base64.b64encode(hmac.new(key, policy, hashlib.sha1).digest())

def get_form(bucket, endpoint, access_key_id, access_key_secret, out):

#1 构建一个Post Policy

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 1048576]]}"

print("policy: %s" % policy)

#2 将Policy字符串进行base64编码

base64policy = convert_base64(policy)

print("base64_encode_policy: %s" % base64policy)

#3 用OSS的AccessKeySecret对编码后的Policy进行签名

signature = get_sign_policy(access_key_secret, base64policy)

#4 构建上传的HTML页面

form = '''

OSS表单上传(PostObject)

''' % (bucket, endpoint, access_key_id, base64policy, signature)

f = open(out, "wb")

f.write(form)

f.close()

print("form is saved into %s" % out)

if __name__ == '__main__':

parser = OptionParser()

parser.add_option("", "--bucket", dest="bucket", help="specify ")

parser.add_option("", "--endpoint", dest="endpoint", help="specify")

parser.add_option("", "--id", dest="id", help="access_key_id")

parser.add_option("", "--key", dest="key", help="access_key_secret")

parser.add_option("", "--out", dest="out", help="out put form")

(opts, args) = parser.parse_args()

if opts.bucket and opts.endpoint and opts.id and opts.key and opts.out:

get_form(opts.bucket, opts.endpoint, opts.id, opts.key, opts.out)

else:

print "python %s --bucket=your-bucket --endpoint=oss-cn-hangzhou.aliyuncs.com --id=your-access-key-id --key=your-access-key-secret --out=out-put-form-name" % __file__

将此段代码保存为post_object.py,然后用python post_object.py来运行。

用法:

python post_object.py --bucket=您的Bucket --endpoint=Bucket对应的OSS域名 --id=您的AccessKeyId --key=您的AccessKeySecret --out=输出的文件名

示例:

python post_object.py --bucket=oss-sample --endpoint=oss-cn-hangzhou.aliyuncs.com --id=tphpxp --key=ZQNJzf4QJRkrH4 --out=post.html

说明

构建的表单中success_action_redirect value=http://oss.aliyun.com 表示上传成功后跳转的页面。可以替换成您自己的页面。

构建的表单中success_action_status value=201表示的是上传成功后返回的状态码为201。可以替换。

假如指定生成的HTML文件为post.html,打开post.html,选择文件上传。在这个例子中如果成功则会跳转到OSS的主页面。

功能使用参考

API:PostObject

Java SDK:表单上传

最佳实践

Web端直传实践

跨域资源共享(CORS)

2019-12-01 23:12:29

0 浏览量

回答数 0

阿里云域名特惠专场,热门域名1元抢购!

全网低价特惠,顶级域名低至1元,更有96元/年服务器限时抢购!

回答

详细解答可以参考官方帮助文档

适用场景

表单上传是指使用OSS API中的PostObject请求来完成Object的上传,上传的Object不能超过5GB。表单上传非常适合嵌入在HTML网页中来上传Object,比较常见的场景是网站应用,以招聘网站为例:

不使用表单上传

表单上传

流程对比

网站用户上传简历。

网站服务器回应上传页面。

简历被上传到网站服务器。

网站服务器再将简历上传到OSS。

网站用户上传简历。

网站服务器回应上传页面。

简历上传到OSS。

上传限制

大小限制:使用表单上传时,Object不能超过5GB。

命名限制:

使用UTF-8编码。

长度必须在1–1023字节之间。

不能以正斜线(/)或者反斜线(\)字符开头。

优势

从流程上来说,少了一步转发,更加方便。

从架构上来说,原来的上传都统一走网站服务器,上传量过大时,需要扩容网站服务器。采用表单上传后,直接从客户端上传数据到OSS。上传量过大时,压力都在OSS上,由OSS来保障服务质量。

安全及授权

为防止第三方未经授权向开发者的Bucket上传Object,OSS提供了Bucket和Object级别的访问权限控制,详情请参见OSS细粒度的权限控制。

为了授权给第三方上传,使用的是PostPolicy方法,详情请参见PostObject。

使用表单上传的基本步骤

构建一个Post Policy。 Post请求的Policy表单域用于验证请求的合法性。例如可以指定上传的大小,可以指定上传的Object名字等,上传成功后客户端跳转到的URL,上传成功后客户端收到的状态码。具体请参考Post Policy。

例如如下Policy,网站用户能上传的过期时间是2115-01-27T10:56:19Z(这里为了测试成功写的过期时间很长,实际使用中不建议这样设置),能上传的文件最大为104857600字节。

以Python代码为例子,Policy是json格式的字符串。

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 104857600]]}"

将Policy字符串进行base64编码。

用OSS的AccessKeySecret对base64编码后的Policy进行签名。

构建上传的HTML页面。

打开HTML页面,选择文件上传。

完整Python代码示例:

#coding=utf8

import md5

import hashlib

import base64

import hmac

from optparse import OptionParser

def convert_base64(input):

return base64.b64encode(input)

def get_sign_policy(key, policy):

return base64.b64encode(hmac.new(key, policy, hashlib.sha1).digest())

def get_form(bucket, endpoint, access_key_id, access_key_secret, out):

#1 构建一个Post Policy

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 1048576]]}"

print("policy: %s" % policy)

#2 将Policy字符串进行base64编码

base64policy = convert_base64(policy)

print("base64_encode_policy: %s" % base64policy)

#3 用OSS的AccessKeySecret对编码后的Policy进行签名

signature = get_sign_policy(access_key_secret, base64policy)

#4 构建上传的HTML页面

form = '''

OSS表单上传(PostObject)

''' % (bucket, endpoint, access_key_id, base64policy, signature)

f = open(out, "wb")

f.write(form)

f.close()

print("form is saved into %s" % out)

if __name__ == '__main__':

parser = OptionParser()

parser.add_option("", "--bucket", dest="bucket", help="specify ")

parser.add_option("", "--endpoint", dest="endpoint", help="specify")

parser.add_option("", "--id", dest="id", help="access_key_id")

parser.add_option("", "--key", dest="key", help="access_key_secret")

parser.add_option("", "--out", dest="out", help="out put form")

(opts, args) = parser.parse_args()

if opts.bucket and opts.endpoint and opts.id and opts.key and opts.out:

get_form(opts.bucket, opts.endpoint, opts.id, opts.key, opts.out)

else:

print "python %s --bucket=your-bucket --endpoint=oss-cn-hangzhou.aliyuncs.com --id=your-access-key-id --key=your-access-key-secret --out=out-put-form-name" % __file__

将此段代码保存为post_object.py,然后用python post_object.py来运行。

用法:

python post_object.py --bucket=您的Bucket --endpoint=Bucket对应的OSS域名 --id=您的AccessKeyId --key=您的AccessKeySecret --out=输出的文件名

示例:

python post_object.py --bucket=oss-sample --endpoint=oss-cn-hangzhou.aliyuncs.com --id=tphpxp --key=ZQNJzf4QJRkrH4 --out=post.html

说明

构建的表单中success_action_redirect value=http://oss.aliyun.com 表示上传成功后跳转的页面。可以替换成您自己的页面。

构建的表单中success_action_status value=201表示的是上传成功后返回的状态码为201。可以替换。

假如指定生成的HTML文件为post.html,打开post.html,选择文件上传。在这个例子中如果成功则会跳转到OSS的主页面。

功能使用参考

API:PostObject

Java SDK:表单上传

最佳实践

Web端直传实践

跨域资源共享(CORS)

2019-12-01 23:12:30

0 浏览量

回答数 0

回答

详细解答可以参考官方帮助文档

适用场景

表单上传是指使用OSS API中的PostObject请求来完成Object的上传,上传的Object不能超过5GB。表单上传非常适合嵌入在HTML网页中来上传Object,比较常见的场景是网站应用,以招聘网站为例:

不使用表单上传

表单上传

流程对比

网站用户上传简历。

网站服务器回应上传页面。

简历被上传到网站服务器。

网站服务器再将简历上传到OSS。

网站用户上传简历。

网站服务器回应上传页面。

简历上传到OSS。

上传限制

大小限制:使用表单上传时,Object不能超过5GB。

命名限制:

使用UTF-8编码。

长度必须在1–1023字节之间。

不能以正斜线(/)或者反斜线(\)字符开头。

优势

从流程上来说,少了一步转发,更加方便。

从架构上来说,原来的上传都统一走网站服务器,上传量过大时,需要扩容网站服务器。采用表单上传后,直接从客户端上传数据到OSS。上传量过大时,压力都在OSS上,由OSS来保障服务质量。

安全及授权

为防止第三方未经授权向开发者的Bucket上传Object,OSS提供了Bucket和Object级别的访问权限控制,详情请参见OSS细粒度的权限控制。

为了授权给第三方上传,使用的是PostPolicy方法,详情请参见PostObject。

使用表单上传的基本步骤

构建一个Post Policy。 Post请求的Policy表单域用于验证请求的合法性。例如可以指定上传的大小,可以指定上传的Object名字等,上传成功后客户端跳转到的URL,上传成功后客户端收到的状态码。具体请参考Post Policy。

例如如下Policy,网站用户能上传的过期时间是2115-01-27T10:56:19Z(这里为了测试成功写的过期时间很长,实际使用中不建议这样设置),能上传的文件最大为104857600字节。

以Python代码为例子,Policy是json格式的字符串。

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 104857600]]}"

将Policy字符串进行base64编码。

用OSS的AccessKeySecret对base64编码后的Policy进行签名。

构建上传的HTML页面。

打开HTML页面,选择文件上传。

完整Python代码示例:

#coding=utf8

import md5

import hashlib

import base64

import hmac

from optparse import OptionParser

def convert_base64(input):

return base64.b64encode(input)

def get_sign_policy(key, policy):

return base64.b64encode(hmac.new(key, policy, hashlib.sha1).digest())

def get_form(bucket, endpoint, access_key_id, access_key_secret, out):

#1 构建一个Post Policy

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 1048576]]}"

print("policy: %s" % policy)

#2 将Policy字符串进行base64编码

base64policy = convert_base64(policy)

print("base64_encode_policy: %s" % base64policy)

#3 用OSS的AccessKeySecret对编码后的Policy进行签名

signature = get_sign_policy(access_key_secret, base64policy)

#4 构建上传的HTML页面

form = '''

OSS表单上传(PostObject)

''' % (bucket, endpoint, access_key_id, base64policy, signature)

f = open(out, "wb")

f.write(form)

f.close()

print("form is saved into %s" % out)

if __name__ == '__main__':

parser = OptionParser()

parser.add_option("", "--bucket", dest="bucket", help="specify ")

parser.add_option("", "--endpoint", dest="endpoint", help="specify")

parser.add_option("", "--id", dest="id", help="access_key_id")

parser.add_option("", "--key", dest="key", help="access_key_secret")

parser.add_option("", "--out", dest="out", help="out put form")

(opts, args) = parser.parse_args()

if opts.bucket and opts.endpoint and opts.id and opts.key and opts.out:

get_form(opts.bucket, opts.endpoint, opts.id, opts.key, opts.out)

else:

print "python %s --bucket=your-bucket --endpoint=oss-cn-hangzhou.aliyuncs.com --id=your-access-key-id --key=your-access-key-secret --out=out-put-form-name" % __file__

将此段代码保存为post_object.py,然后用python post_object.py来运行。

用法:

python post_object.py --bucket=您的Bucket --endpoint=Bucket对应的OSS域名 --id=您的AccessKeyId --key=您的AccessKeySecret --out=输出的文件名

示例:

python post_object.py --bucket=oss-sample --endpoint=oss-cn-hangzhou.aliyuncs.com --id=tphpxp --key=ZQNJzf4QJRkrH4 --out=post.html

说明

构建的表单中success_action_redirect value=http://oss.aliyun.com 表示上传成功后跳转的页面。可以替换成您自己的页面。

构建的表单中success_action_status value=201表示的是上传成功后返回的状态码为201。可以替换。

假如指定生成的HTML文件为post.html,打开post.html,选择文件上传。在这个例子中如果成功则会跳转到OSS的主页面。

功能使用参考

API:PostObject

Java SDK:表单上传

最佳实践

Web端直传实践

跨域资源共享(CORS)

2019-12-01 23:12:29

0 浏览量

回答数 0

回答

详细解答可以参考官方帮助文档

适用场景

表单上传是指使用OSS API中的PostObject请求来完成Object的上传,上传的Object不能超过5GB。表单上传非常适合嵌入在HTML网页中来上传Object,比较常见的场景是网站应用,以招聘网站为例:

不使用表单上传

表单上传

流程对比

网站用户上传简历。

网站服务器回应上传页面。

简历被上传到网站服务器。

网站服务器再将简历上传到OSS。

网站用户上传简历。

网站服务器回应上传页面。

简历上传到OSS。

上传限制

大小限制:使用表单上传时,Object不能超过5GB。

命名限制:

使用UTF-8编码。

长度必须在1–1023字节之间。

不能以正斜线(/)或者反斜线(\)字符开头。

优势

从流程上来说,少了一步转发,更加方便。

从架构上来说,原来的上传都统一走网站服务器,上传量过大时,需要扩容网站服务器。采用表单上传后,直接从客户端上传数据到OSS。上传量过大时,压力都在OSS上,由OSS来保障服务质量。

安全及授权

为防止第三方未经授权向开发者的Bucket上传Object,OSS提供了Bucket和Object级别的访问权限控制,详情请参见OSS细粒度的权限控制。

为了授权给第三方上传,使用的是PostPolicy方法,详情请参见PostObject。

使用表单上传的基本步骤

构建一个Post Policy。 Post请求的Policy表单域用于验证请求的合法性。例如可以指定上传的大小,可以指定上传的Object名字等,上传成功后客户端跳转到的URL,上传成功后客户端收到的状态码。具体请参考Post Policy。

例如如下Policy,网站用户能上传的过期时间是2115-01-27T10:56:19Z(这里为了测试成功写的过期时间很长,实际使用中不建议这样设置),能上传的文件最大为104857600字节。

以Python代码为例子,Policy是json格式的字符串。

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 104857600]]}"

将Policy字符串进行base64编码。

用OSS的AccessKeySecret对base64编码后的Policy进行签名。

构建上传的HTML页面。

打开HTML页面,选择文件上传。

完整Python代码示例:

#coding=utf8

import md5

import hashlib

import base64

import hmac

from optparse import OptionParser

def convert_base64(input):

return base64.b64encode(input)

def get_sign_policy(key, policy):

return base64.b64encode(hmac.new(key, policy, hashlib.sha1).digest())

def get_form(bucket, endpoint, access_key_id, access_key_secret, out):

#1 构建一个Post Policy

policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 1048576]]}"

print("policy: %s" % policy)

#2 将Policy字符串进行base64编码

base64policy = convert_base64(policy)

print("base64_encode_policy: %s" % base64policy)

#3 用OSS的AccessKeySecret对编码后的Policy进行签名

signature = get_sign_policy(access_key_secret, base64policy)

#4 构建上传的HTML页面

form = '''

OSS表单上传(PostObject)

''' % (bucket, endpoint, access_key_id, base64policy, signature)

f = open(out, "wb")

f.write(form)

f.close()

print("form is saved into %s" % out)

if __name__ == '__main__':

parser = OptionParser()

parser.add_option("", "--bucket", dest="bucket", help="specify ")

parser.add_option("", "--endpoint", dest="endpoint", help="specify")

parser.add_option("", "--id", dest="id", help="access_key_id")

parser.add_option("", "--key", dest="key", help="access_key_secret")

parser.add_option("", "--out", dest="out", help="out put form")

(opts, args) = parser.parse_args()

if opts.bucket and opts.endpoint and opts.id and opts.key and opts.out:

get_form(opts.bucket, opts.endpoint, opts.id, opts.key, opts.out)

else:

print "python %s --bucket=your-bucket --endpoint=oss-cn-hangzhou.aliyuncs.com --id=your-access-key-id --key=your-access-key-secret --out=out-put-form-name" % __file__

将此段代码保存为post_object.py,然后用python post_object.py来运行。

用法:

python post_object.py --bucket=您的Bucket --endpoint=Bucket对应的OSS域名 --id=您的AccessKeyId --key=您的AccessKeySecret --out=输出的文件名

示例:

python post_object.py --bucket=oss-sample --endpoint=oss-cn-hangzhou.aliyuncs.com --id=tphpxp --key=ZQNJzf4QJRkrH4 --out=post.html

说明

构建的表单中success_action_redirect value=http://oss.aliyun.com 表示上传成功后跳转的页面。可以替换成您自己的页面。

构建的表单中success_action_status value=201表示的是上传成功后返回的状态码为201。可以替换。

假如指定生成的HTML文件为post.html,打开post.html,选择文件上传。在这个例子中如果成功则会跳转到OSS的主页面。

功能使用参考

API:PostObject

Java SDK:表单上传

最佳实践

Web端直传实践

跨域资源共享(CORS)

2019-12-01 23:12:30

0 浏览量

回答数 0

问题

【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

评测介绍

评测产品: 云引擎ACE服务开发语言: PHP评测人: mr_wid评测时间: 2014年10月13日-19日

评测概要

非常有幸能够申请到ACE的公测资格, 在本篇评测中, 笔者将以一个开发者的角度来对云引擎...

mr_wid

2019-12-01 21:10:06

20092 浏览量

回答数 6

问题

归档存储的命令行工具

oascmd.py 是 Python SDK 提供给用户的一个快捷的命令行测试工具,除了提供方便用户快捷使用的命令以外,还有分别与 归档存储 API 文档描述的接口一一对应的底层命令。

其中,[]内...

云栖大讲堂

2019-12-01 21:09:08

1562 浏览量

回答数 0

问题

程序员报错QA大分享(1)

程序员报错QA征集第一弹来了哦~包含QA分享一期征集的部分内容,链接附带解决方案,可收藏哦~

npm install安装依赖一直报错?报错https://developer.aliyun.com/ask/301...

问问小秘

2020-06-18 15:46:14

1684 浏览量

回答数 2


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部