private function encodeBase64(string:String):String
{
var result:String = "";
var array:ByteArray = new ByteArray();
var encoder:Base64Encoder = new Base64Encoder();
array.writeUTFBytes(string);
encoder.encodeBytes(array, 0, array.length);
result = encoder.toString();
return result;
}
2008-11-28
用Flex搞定一个文件上传功能
其实Flex文件上传功能几个月之前就写过,后台是Java,那段程序上传文件的同时还要保存一些其他信息,当时陆陆续续用了两个星期。这次后台是ASP.NET,功能还要简单些(文件上传时不附加其他信息),用了三天时间。与以前写的程序相比,新增的功能是上传完图片可以调整图片尺寸或者剪裁图片,调整图片尺寸是弹出TitleWindow设定宽、高,然后改变加载图片的Loader的大小,剪裁图片是用鼠标选择剪裁区域,做完以上的操作将图片信息传到服务器,由C#来修改图片。这些大概用了一天多。后来是把这段程序嵌入到现有的系统中,要从JavaScript处获取几个参数,这就用到了FABridge。开始是把Flex编译好的Flash放入层中,由层的显示/隐藏来模拟窗口。但遇到了一个问题:JavaScript从AS那里获取对象或属性时第一次还好,以后则会产生错误,一直没有找到解决方案。于是只好改成了弹出模式窗口,原来的系统在非IE浏览器中变形严重,所以我就没任何顾虑的用模式窗口了。还有个问题就是为了把上传相关的功能都写在一个程序文件里,接收文件信息我是直接读的Request.InputStream,先在AS里把参数用分隔符隔开并采用Base64编码,然后C#解码。开始是随机生成的文件名,没有特殊字符一切还好,后来参数里会有汉字,然后服务器端就不能正确读出了。后来写了段函数在AS中对字串做处理再往服务器端传问题得以解决,代码如下:
订阅:
博文评论 (Atom)

没有评论:
发表评论