Flash中使用Filereference上传文件的一些注意事项
来源:互联网 发布:蜂群算法的优点 编辑:程序博客网 时间:2024/04/30 17:06
FileReference用来上传文件,结合FileReferenceList使用,可以弹出一次文件选择框就上传很多个文件,比HTML form形式的友好很多。但是使用的时候,有些地方需要注意的: 这点不同于URLLoader:URLLoader是可以增加自定义头部信息(request header)到对应的URLRequest对象中的,但是敏感的字段是不可以更改的,比如refer、cookie、host等等;而FileReferrence.upload使用的URLRequest,则不可以增加任何自定义头信息,所有自己添加的自定义header,都被播放器悄无声息地忽略掉了,没有任何报错和提示。如果一定要增加字段,只能添加到POST变量中。 这是一个很汗的bug,在非IE浏览器中,利用FileReference发出的HTTP请求,带的cookie资料都是IE的cookie。即便在Firefox或者chrome中,传送的cookie也是IE的!有的同学说这和默认浏览器设置有关,例如将默认浏览器设为Firefox,那么IE就得不到cookie。但是我测试了一下,发现无论默认浏览器是什么,发送的都是IE的cookie。解决方案暂时是借用JS得到cookie( ExternalInterface.call(”javascript:document.cookie”) ),当作变量post过去。服务器端也要做相应的调整,比较麻烦,针对非IE浏览器用非Cookie方式验证。 Flash10的Filereference可以得到本地文件的二进制文件 (存放在filereference.data)中,但是得不到文件路径(file://…)。这个问题还附带导致了一个问题,FilereferrenceList不能判断出重复选择的文件。就是说第一次弹出文件选择对话框的时候,用户选择了一个文件。过了一段时间再继续浏览文件,又选择了这个文件,这时候Flash是没有办法知道重复选择的。 给Filereference.upload 使用的URLRequest,是受一些安全性限制的,除了本身的一些关键字段不能修改之外,contnent-type属性也不能修改。可能会让人郁闷的是,这个也没有任何throw/warning报错。content-type的值恒定为 “ application/octet-stream ”。 要是要上传一些动态生成的数据到服务器存储,那就用不得Filereference,也看不到上传进度了。 内存里面的数据,希望上传到服务器保存为文件,可以用URLLoader,URLStream之类的代替。但是FlashPlayer10有个新增的安全性限制,当上传文件的时候,播放器会检查操作是否由用户点击触发。没有点击就上传,会被浏览器阻挡掉请求。播放器判断一个HTTP请求是否是文件上传的依据是form-based-HTML-file-upload规范,有两个标志:
一是content-type含有“ multipart”,例如“multipart/form-data”,“mymultipartxxx”;
二是字段名含有 filename。
满足了这两点,flash播放器就会把这次请求当作文件上传处理,进而检查是否符合安全限制。要防止被阻挡掉也很简单,不要用filename这个关键字做数据的字段名即可。
- Flash中使用Filereference上传文件的一些注意事项
- Firefox中使用FileReference上传文件的问题:Session丢失
- 使用FileReference上传文件
- flex:使用FileReference上传文件
- Flex中使用FileReference类多文件上传
- Flex中使用FileReference类下载文件
- [Flash FileUpload]用flash.net.FileReference实现ASP.NET无刷新文件上传
- [Flash FileUpload]用flash.net.FileReference实现ASP.NET无刷新文件上传
- flex使用filereference+httphandler实现文件上传/下载
- flex使用filereference+httphandler实现文件上传/下载
- Flash的FileReference在使用代理上网的问题
- 利用FileReference来上传文件
- FileReference 上传文件,java接收
- FileReference URLrequest上传文件的问题:Session丢失
- Flex中利用FileReference类的browse()和upload()函数选择并上传单个文件到Web服务器
- 在Flex中使用FileReference类下载文件
- Flash 与 FlashBuild 结合使用时的一些注意事项
- flex filereference+httphandler实现文件上传/下载
- 最近的计划
- ICEfaces学习2
- OpenDataSource and OpenDataSource(2)
- sql server 2000转mysql后,sql语句的修改对照
- 王爽之《汇编语言》学习重点五
- Flash中使用Filereference上传文件的一些注意事项
- asp.net避免按钮重复点击,使按钮点击后变灰
- 王爽之《汇编语言》学习重点六
- 标准的 SQL 的解析顺序
- Myeclipse断点调试
- VC++6.0如何设置使其支持Unicode编程
- 学习汇编前你应该知道的知识
- 例子一对多单向 多对一单向 查询记录集
- Provider (0x80004005)未指定的错误(asp+access)