Flash11.8更新后SWFUpload出现乱码问题

我是我啊11 2013-09-12 12:50:33

11.6以前都正常

11.8更新以后file_queued 取到的file.name遇到中文就是乱码。

这还只是在客户端出现的问题,还没有传到后台。

求大大们指点!
...全文
1538 36 打赏 收藏 举报
写回复
36 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dx396348828 2014-10-10
参考例子,http://download.csdn.net/detail/dx396348828/8022405
  • 打赏
  • 举报
回复
dx396348828 2014-10-10
引用 34 楼 idoiknow 的回复:
[quote=引用 33 楼 u012229978 的回复:] 谁有swfupload.swf下载地址呀
http://download.csdn.net/detail/idoiknow/6320265[/quote] 替换这个,直接fileprogress.js中FileProgress函数里改就好了,不用改其他 //filename this.filenameSpan = document.createElement("span"); this.filenameSpan.className = swfu.settings.custom_settings.fname_css; //file.name = decodeURI(file.name); var sub_name = decodeURI(file.name); if(sub_name.length > 13) { sub_name = sub_name.substr(sub_name.length - 13, 13); } //alert(sub_name); this.filenameSpan.appendChild(document.createTextNode(sub_name)); this.fileProgressElement.appendChild(this.filenameSpan); ------------------------------------------
  • 打赏
  • 举报
回复
idoiknow 2013-09-25
引用 33 楼 u012229978 的回复:
谁有swfupload.swf下载地址呀
http://download.csdn.net/detail/idoiknow/6320265
  • 打赏
  • 举报
回复
注册用户名 2013-09-24
谁有swfupload.swf下载地址呀
  • 打赏
  • 举报
回复
idoiknow 2013-09-18
引用 29 楼 Borenbao 的回复:
额。。。确实是13K。。。 我找到原因了,我一直选的debug....
哈哈~, soga~, 还是非常感谢你的方法帮了好多人
  • 打赏
  • 举报
回复
Borenbao 2013-09-18
serverData是上传完成后你的上传程序反回的数据,这个乱你可以试试在上传程序中修改编码方式,比如改成utf-8 或gb2312,都不行的话再加上一层encodeURI编码,如果加了encodeURI需要在javascript中再decodeURI解码。
  • 打赏
  • 举报
回复
idoiknow 2013-09-17
引用 25 楼 tanklovehy 的回复:
请问您是用什么 反编译软件 弄的。能把软件给说一下吗? 求大神说明
官方网站就有源码下载:https://code.google.com/p/swfupload/downloads/list 下载下来的压缩包里面有Flash文件夹,包含若干as文件, 用FlashDevelop打开*.as3proj项目文件,可以修改、重新编译生成swf 如果你确实想对那个swf文件进行反编译,这有一个在线工具 http://www.showmycode.com/ 以上文件在本人资源页都有的
  • 打赏
  • 举报
回复
junjieok 2013-09-17
引用 18 楼 Borenbao 的回复:
解决方案: 下载swfupload 源码。 修改flash中的FileItem.as文件,添加 import flash.utils.ByteArray; 在40行左右 修改 this.js_object.name = this._file_reference.name; 为 var result:String =""; var byte:ByteArray=new ByteArray(); byte.writeMultiByte(this.file_reference.name,"utf-8"); for(var j:int;j<byte.length;j++){ result += escape(String.fromCharCode(byte[j])); } this.js_object.name = result; 重新编译取得 swfupload.swf文件替换。 然后修改swfupload.js文件中的。SWFUpload.prototype.unescapeFilePostParams 函数 在 file.post = unescapedPost; 下面加一行 file.name = decodeURI(file.name); 搞定。
你好,源码: SWFUpload.prototype.uploadSuccess = function (file, serverData, responseReceived) { file = this.unescapeFilePostParams(file); this.queueEvent("upload_success_handler", [file,serverData, responseReceived]); }; serverData中的中文也出现乱码,我用decodeURI(serverData)也不能解决
  • 打赏
  • 举报
回复
Borenbao 2013-09-17
额。。。确实是13K。。。 我找到原因了,我一直选的debug....
  • 打赏
  • 举报
回复
Borenbao 2013-09-17
我也是用flashdevelop 编译的。。。
  • 打赏
  • 举报
回复
Borenbao 2013-09-17
引用 23 楼 idoiknow 的回复:
18楼方法确实有效,但我有个疑问,这swf文件原先12.4k,改几行代码就变成21k了? [quote=引用 18 楼 Borenbao 的回复:] 解决方案: 下载swfupload 源码。 修改flash中的FileItem.as文件,添加 import flash.utils.ByteArray; 在40行左右 修改 this.js_object.name = this._file_reference.name; 为 var result:String =""; var byte:ByteArray=new ByteArray(); byte.writeMultiByte(this.file_reference.name,"utf-8"); for(var j:int;j<byte.length;j++){ result += escape(String.fromCharCode(byte[j])); } this.js_object.name = result; 重新编译取得 swfupload.swf文件替换。 然后修改swfupload.js文件中的。SWFUpload.prototype.unescapeFilePostParams 函数 在 file.post = unescapedPost; 下面加一行 file.name = decodeURI(file.name); 搞定。
[/quote] 这个确实是。我对Flex不是很熟悉,编译工具啥的都是现从百度搜出来的。我下载的源码SWFUpload_v250_beta_3_core 里面的f9 f10 编译完居然200多K,后来下载的SWFUpload v2.2.0.1 Core编译后也是20多K比原来的大不少的,不知道为什么,反正能用差几K就这样了。
  • 打赏
  • 举报
回复
idoiknow 2013-09-16
18楼方法确实有效,但我有个疑问,这swf文件原先12.4k,改几行代码就变成21k了?
引用 18 楼 Borenbao 的回复:
解决方案: 下载swfupload 源码。 修改flash中的FileItem.as文件,添加 import flash.utils.ByteArray; 在40行左右 修改 this.js_object.name = this._file_reference.name; 为 var result:String =""; var byte:ByteArray=new ByteArray(); byte.writeMultiByte(this.file_reference.name,"utf-8"); for(var j:int;j<byte.length;j++){ result += escape(String.fromCharCode(byte[j])); } this.js_object.name = result; 重新编译取得 swfupload.swf文件替换。 然后修改swfupload.js文件中的。SWFUpload.prototype.unescapeFilePostParams 函数 在 file.post = unescapedPost; 下面加一行 file.name = decodeURI(file.name); 搞定。
  • 打赏
  • 举报
回复
zhaoyabj 2013-09-16
引用 18 楼 Borenbao 的回复:
解决方案: 下载swfupload 源码。 修改flash中的FileItem.as文件,添加 import flash.utils.ByteArray; 在40行左右 修改 this.js_object.name = this._file_reference.name; 为 var result:String =""; var byte:ByteArray=new ByteArray(); byte.writeMultiByte(this.file_reference.name,"utf-8"); for(var j:int;j<byte.length;j++){ result += escape(String.fromCharCode(byte[j])); } this.js_object.name = result; 重新编译取得 swfupload.swf文件替换。 然后修改swfupload.js文件中的。SWFUpload.prototype.unescapeFilePostParams 函数 在 file.post = unescapedPost; 下面加一行 file.name = decodeURI(file.name); 搞定。
请问您是用什么 反编译软件 弄的。能把软件给说一下吗? 求大神说明
  • 打赏
  • 举报
回复
idoiknow 2013-09-16
始终有点不放心,自己装个编译环境,按照18楼的方法修改,编译了一下,得到的文件是13k 地址:http://download.csdn.net/download/idoiknow/6275355
  • 打赏
  • 举报
回复
shellar1990 2013-09-14
引用 19 楼 Borenbao 的回复:
懒汉专用下载swfupload.swf文件 http://www.netsud.cn/cgi-bin/get_share_action?token=dWlkPWJiciZkb21haW49bmV0c3VkLmNuJmZpZD0xMzAyMjAwNDQmdGltZWNoYXI9MTM3OTY3MDkzMyZub3dfcGF0aD0vLg==
3s!!!!
  • 打赏
  • 举报
回复
雨洲 2013-09-14
http://bbs.csdn.net/topics/390591088已解决
  • 打赏
  • 举报
回复
nihao005599 2013-09-13
也出现此问题,求赶紧更新
  • 打赏
  • 举报
回复
pfdcs 2013-09-13
引用 13 楼 idoiknow 的回复:
我也遇到这问题,哎,无奈啊,泱泱中华几百万程序员,竟然只能干等着Adobe更新
有临时解决方案: http://www.iteye.com/problems/97838
  • 打赏
  • 举报
回复
pfdcs 2013-09-13
官方BUG反馈 https://bugbase.adobe.com/index.cfm?event=bug&id=3630443
  • 打赏
  • 举报
回复
idoiknow 2013-09-13
我也遇到这问题,哎,无奈啊,泱泱中华几百万程序员,竟然只能干等着Adobe更新
  • 打赏
  • 举报
回复
加载更多回复(16)
发帖
.NET社区

6.0w+

社区成员

.NET技术交流专区
社区管理员
  • ASP.NET
  • R小R
  • 喵叔哟
加入社区
帖子事件
创建了帖子
2013-09-12 12:50
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。