java-flex 批量下载文件-压缩下载
2016-11-11 14:46
435 查看
参考了 http://ljy-888.iteye.com/blog/1695024 得到启发 ,非常感谢。
Ftp上的文件 可以将数据传到前台 进行压缩
效果还不错
主要思路:
获取文件 以 List<byte[] >形式传值到前台
前台获取数组,并将其进行压缩
中间可能出现中文乱码 要处理
java代码:
/*
ftpClient ftp地址
path:路径
filename:文件名称
*/
public byte[] getFtpFileData(FtpClient ftpClient, String path,
String fileName) throws IOException {
byte[] bytes = new byte[1024];
try {
if (path != null && path.length() != 0) {
//在文件所在目录下
ftpClient.cd(path);
}
ftpClient.binary();//切换传输方式为二进制
TelnetInputStream tis = ftpClient.get(fileName);
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
int bufsize = 0;
while ((bufsize = tis.read(bytes)) != -1) {
byteOut.write(bytes, 0, bufsize);
}
byte[] return_data = byteOut.toByteArray();
byteOut.close();
tis.close();
return return_data;
} catch (IOException ex) {
System.out.println(e);
}
return null;
}
flex代码:
前天获取传参后 获取对应的数据结果,处理的代码如下:
private function closeFtpHandler(event:ResultEvent) : void
{
var fileData:ArrayCollection=event.result as ArrayCollection;
if(fileData==null || fileData.length<1){
Alert.show("无附件可供下载,请重新选择","提示",Alert.OK,this,null);
}else{
//前台压缩
var zip:FZip = new FZip();
for(var z:int=0;z<fileData.length;z++){
var bytes:ByteArray=fileData.getItemAt(z+1) as ByteArray;
bytes.position=0;
zip.addFile(bytes.readUTFBytes(bytes.length),fileData.getItemAt(z) as ByteArray);
z++;
}
var zipData:ByteArray = new ByteArray();
zip.serialize(zipData);
var file:FileReference=new FileReference();
var format:DateFormatter=new DateFormatter();
format.formatString="YYYY-MM-DD-JJNNSS";
format.format(new Date());
file.save( zipData,format.format(new Date())+ ".zip" );
}
}
结果展示:
Ftp上的文件 可以将数据传到前台 进行压缩
效果还不错
主要思路:
获取文件 以 List<byte[] >形式传值到前台
前台获取数组,并将其进行压缩
中间可能出现中文乱码 要处理
java代码:
/*
ftpClient ftp地址
path:路径
filename:文件名称
*/
public byte[] getFtpFileData(FtpClient ftpClient, String path,
String fileName) throws IOException {
byte[] bytes = new byte[1024];
try {
if (path != null && path.length() != 0) {
//在文件所在目录下
ftpClient.cd(path);
}
ftpClient.binary();//切换传输方式为二进制
TelnetInputStream tis = ftpClient.get(fileName);
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
int bufsize = 0;
while ((bufsize = tis.read(bytes)) != -1) {
byteOut.write(bytes, 0, bufsize);
}
byte[] return_data = byteOut.toByteArray();
byteOut.close();
tis.close();
return return_data;
} catch (IOException ex) {
System.out.println(e);
}
return null;
}
/*filenamelist 文件名称 */ public List<byte[]> download(String ip,int port,String user,String password,List<String> filenamelist) { FtpClient ftpClient = new FtpClient(); FileProsser fp = new FileProsser(); try { /*ftpClient.openServer(ip, port); 也可以用的*/ ftpClient = new FtpClient(ip); ftpClient.login(user, password); for(int k=0;k<filenamelist.size();k++){ return_list.add(getFtpFileData(ftpClient, IConstant.FTP_PATH, filenamelist.get(k).toString()));//添加文件 byte[] names=filenamelist.get(k).toString().getBytes("UTF-8");//中文乱码 System.out.println(new String(names,"UTF-8")); return_list.add(names);.. } return return_list; } catch (IOException e) { e.printStackTrace(); } return null; }
flex代码:
前天获取传参后 获取对应的数据结果,处理的代码如下:
private function closeFtpHandler(event:ResultEvent) : void
{
var fileData:ArrayCollection=event.result as ArrayCollection;
if(fileData==null || fileData.length<1){
Alert.show("无附件可供下载,请重新选择","提示",Alert.OK,this,null);
}else{
//前台压缩
var zip:FZip = new FZip();
for(var z:int=0;z<fileData.length;z++){
var bytes:ByteArray=fileData.getItemAt(z+1) as ByteArray;
bytes.position=0;
zip.addFile(bytes.readUTFBytes(bytes.length),fileData.getItemAt(z) as ByteArray);
z++;
}
var zipData:ByteArray = new ByteArray();
zip.serialize(zipData);
var file:FileReference=new FileReference();
var format:DateFormatter=new DateFormatter();
format.formatString="YYYY-MM-DD-JJNNSS";
format.format(new Date());
file.save( zipData,format.format(new Date())+ ".zip" );
}
}
结果展示:
相关文章推荐
- java后台批量下载文件压缩ZIP
- java后台批量下载文件并压缩成zip下载的方法
- Java 批量文件压缩导出并下载到本地示例代码
- Java 批量文件压缩导出,并下载到本地
- strtus2 批量下载 中文问题、压缩文件等 ------ 讨论struts2工作流程 (摘自:http://www.blogjava.net/xcp/archive/2009/10/30/downloadlist.html)
- Java 批量下载 压缩文件 rar格式
- java 批量下载网络文件
- Java批量下载生成zip文件
- 在ASP.NET中实现压缩多个文件为.zip文件,实现批量下载功能
- Java 实现文件批量文件打包下载
- java 上传文件和批量下载文件(转载)
- java上传文件跟批量下载文件
- java上传文件跟批量下载文件
- Flex+Java组合解决汉字或特殊符号(如&等)文件下载时的文件名乱码问题
- java上传文件跟批量下载文件(转)
- java将文件批量打包后并下载
- Java批量文件打包下载
- Java批量下载zip文件
- strtus2 批量下载 中文问题、压缩文件等 ------ 讨论struts2工作流程
- JAVA上传批量下载文件