flash可以使用oss post object方式上传到oss吗

FLASH提交GET/POST数据到远程PHP文件
loadVariables提供了一种简单的方法让我们可以从服务器端的ASP或者PHP页面载入变量,除了使用GET方法,它还可以使用POST方法将
客户端提交的数据传递给服务器。然而在处理大量客户端与服务器端交互的信息时,使用过多的loadVariables语句会让整个程序的维护性和可读性变
得复杂。在Flash
MX的Action中,新增加了一个LoadVars的对象,并将它和XML,XMLSocket对象一起归纳于Client/Server对象之下。
LoadVars&对象是&loadVariables
动作的替代方法,它能够提供一种更好的结构向服务器发送和返回信息。一个典型的LoadVars对象使用的例子如下:复制内容到剪贴板fla代码://构造一个新的LoadVars对象
myload&=&new&LoadVars();
//设定myload的动作,以便服务器验证
myload.action&=&"post";
//验证和服务器连接的函数
myload.onLoad&=&function(success)&{
//如果和服务器成功连接则…
&&&&if&(success)&{
//如果验证动作成功则…
&&&&&&&&if&(this.conn&==&"1")&{
&&&&&&&&&//将返回对象中的output变量赋值给场景中var为output的Dynamic&Text框
&&&&&&&&&&&&_root.output&=&this.
&&&&}&else&{
&&&&&&&&//如果和服务器连接不成功则返回失败消息,需要检查路径是否正确
&&&&&&&&_root.output&=&"Can't&connect&to&Server";
//Dynamic&Text的初始值为一个等待消息
_root.output&=&"Waiting&for&response...";
//将myload下的变量发送到服务器端,并将服务器返回的数据结果放在myload对象中
myload.sendAndLoad("/ras/insertcorn.php",myload,&"post");
//注意这里的url
场景中以一个var名为output的Dynamic
Text框来接受来自服务器的消息。使用LoadVars,我们可以利用sendAndLoad方法将一个LoadVars的实体下的所有变量发送出去,
并将服务器返回的数据结果存储到一个目标对象中,其中conn是从服务器发送回来的,我们还利用了其onLoad事件函数来检验其是否将
信息发送到了服务器页面,再利用从服务器传回来的数据(this.conn)来验证信息是否正确。服务器页面的代码如下:
PHPinsertcorn.php:
$action&=&$HTTP_POST_VARS["action"];
if&($action&==&"post")&{
&&&&$str_Msg&=&"OK!&return&a&Msg&to&you!";
&&&&$conn&=&1;&//加分记录成功
$output=&'suc';
&&$conn&=&0;//加分记录失败
$output=&'error';
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Html直接表单直传阿里地区云存储OSS示例 - 操作系统当前位置:& &&&Html直接表单直传阿里地区云存储OSS示例Html直接表单直传阿里地区云存储OSS示例&&网友分享于:&&浏览:0次Html直接表单直传阿里云存储OSS示例&
本教程的目录是通过三个例子介绍如何在Html表单提交直传OSS
第一个例子:讲解如何在JS直接签名,直接表单上传到OSS
第二个例子:讲解如何在从后端PHP获取签名,然后直接表单上传到OSS
第三个例子:讲解如何在从后端PHP获取签名及上传后回调。然后直接表单上传到OSS,OSS回调完应用服务器再返回给用户。
每个用OSS的用户,都会用到上传。由于是网页上传,其中包括一些APP里面的h5页面,对上传的需求很强烈,很多人采用的做法是用户在浏览器/APP上传到应用服务器,然后应用服务器再把文件上传到OSS。
这种方法有三个缺点,
第一:上传慢,先上传到应用服务器,再上传到OSS,网络传送多了一倍,而且OSS是采用BGP带宽,能保证各地各运营商的速度。
第二:扩展性不好,如果后续用户多了,应用服务器会成为瓶颈。
第三:费用高,因为OSS上传流量是免费的。如果数据直传到OSS,不走应用服务器。那么将能省下几台应用服务器。
改进方案1:客户端用JS直接签名,然后上传到OSS
下面我将介绍用plupload&,在JS端签名然后直传数据到OSS的例子
二维码:可以用手机(微信,QQ,手机浏览器等)扫一扫试试
原理&&&&&&&&&&&&&&&&&&
本例子的功能
1.采用plupload&直接提高表单数据(即PostObject)到OSS
2.支持html5,flash,silverlight,html4&等协议上传
3.&可以运行在PC浏览器,手机浏览器,微信等
4.可以选择多文件上传
5.显示上传进度条
6.可以控制上传文件的大小
OSS的PostObject&API细节可以参照(看不懂没有关系):
plupload是一款简单易用且功能强大,&拥有多种上传方式,(html5,&flash,&&silverlight,&html4)等方式,会智能检测当前环境
选择最适合的方式,并且会优先采用Html5,&所以不用花心思去当前的浏览器要用何种方式上传,plupload会帮您考虑好。
关键代码& & & &&
因为OSS原生支持POST协议。所以只要将plupload在发送POST请求时,带上OSS签名即可。
核心代码如下:
var uploader = new plupload.Uploader({
&&&&runtimes : 'html5,flash,silverlight,html4',
&&&&browse_button : 'selectfiles',
&&&&//runtimes : 'flash',
&&&&container: document.getElementById('container'),
&&&&flash_swf_url : 'lib/plupload-2.1.2/js/Moxie.swf',
&&&&silverlight_xap_url : 'lib/plupload-2.1.2/js/Moxie.xap',
&&&&url : host,
&&&&multipart_params: {
&&&&&&&&'Filename': '${filename}',
&&&&&&&&'key' : '${filename}',
&&&&&&&&'policy': policyBase64,
&&&&&&&&'OSSAccessKeyId': accessid,
&&&&&&&&'success_action_status' : '200', //让服务端返回200,不然,默认会返回204
&&&&&&&&'signature': signature,
签名signature主要是对policyText进行签名,最简单的例子如下:&
var policyText = {
&&&&"expiration": "T12:00:00.000Z", //&&&&&& 设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了
&&&&"conditions": [
&&&&["content-length-range", 0, ] // 设置上传文件的大小限制,如果超过了这个大小,文件上传到OSS会报错的
Cors(跨域访问)
&注意:如果一定要保证bucket属性Cors设置支持POST方法。因为这个HTML直接上传到OSS,会产生跨域请求。必须在bucket属性里面设置允许跨域, 可以在OSS控制台里面设置&设置如下图:&
/files/ossteam/oss-h5-upload-js-direct.tar.gz&
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有如何直接上传文件至OSS,不用服务器中转_百度知道
如何直接上传文件至OSS,不用服务器中转
提问者采纳
因此、开发较复杂,另外,不需要再改服务器端了,因为上传文件大小的不 一样,客户端的进度条相对来说,要准确一点,那是要少很多请求了,由于要定时起一个HTTP 连接去获得进度信息,还造成那个周期很 难选择:第一、JAVASCRIPT,因此,第二,你要把周期获得进度的方式,在低速的情况下,之前试过。而这段时间又不好控制了,但是后面越来越慢的情况,因 此如果你一次上传多个文件。 对了, 说简单地: 第一。 其实如果已经决定采用flash 了,要改成FLASH 上传,复杂程度相对属于中等程度,比起AJAX 来说,但是,否则操作系统的线程限制,否则。 总结一下,会有下面几个问题、FLASH 是通过获得发送数据的进度来体现进度 条的。 2,希望对大家有帮助,但是进度的展现有些不是很准确,那很郁闷的、服务器端一定要选择支持HTTP 长连接的服务器,因此,那就是FLASH 上传多个文件是采用多线程上传的,否则服务器长连 接、就不说了。 第二.0,COMET 将使得服务器可以主 动将进度情况汇报给客户端,所以,还有一种情况需要改服务器端,IE 会在收 到一定数量的JAVASCRIPT 之后才执行。 3,所以基本很难达到FLASH 那样的效果,还是比较痛苦的。 4,压力肯定受不了、除非原来就采用的是COMET 的进度方式、对于不同的浏览器,常常会出各种各样的BUG。 2 其实很麻烦的,你直接做个FLASH 客户端就好了,但 是界面上还是需要等一段时间才能响应,所以需要把结构转化为JAVASCRIPT 调用才行。 第三、以及 JAVA 的 开发。另外一个优点是,网络环境的差异,性能相对好一些,那就不需要再去修改服务器端的代码了,发生的连接请求也增多 ,反正FLASH 本身已经提供了进度指示了,那就需要改服务器端了,但是代码量都不是很多,我试验的结果是,开发肯定是最麻烦的,改成 COMET 的方式。需要在所有线程上传完成的情况下,COMET 本身需要服务器的支持,由于一次上传实际上只启动了两个HTTP 链接 请求,所以虽然我在服务器端每次都调用了flush 方法。但是FLASH 也有几个问 题,COMET 要服务器主动把进度信息用JAVASCRIPT 的方式发回客户端 、目前看来解决方案最好的一个了,但要给每种浏览器都 要搞个插件,处理 JAVASCRIPT 的方式是不一样的,但是进度条效果肯定是最好的上述四种方法的比较,会导致并 发降低、浏览器 FLASH 版本兼容问题,这样TOMCAT 至少得选6,因为那个进度信 息服务器发不发都不会影响到代码的执行,经 常会有一开始速度很快,虽然开发需要涉及到 FLASH, 再去修改数据库,因此虽然不需要服务器端开发进度部分的代码,导致了下发的JAVASCRIPT 数量也不一样: 1、开发简单
其他类似问题
为您推荐:
oss的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 oss post object 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信