用JSP如何实现文件夹时。自动打包上传

binger819623 2006-08-23 08:10:07
我想实现的功能是:用表单上传一个文件夹下的内容。上传的时候能自动打包压缩上传。到了服务器端再自动解包。

哪位高手帮我解决可再加分!
...全文
2955 34 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
qf521lx 2007-02-11
  • 打赏
  • 举报
回复
我帮你顶
binger819623 2006-08-24
  • 打赏
  • 举报
回复
to xiangbo520(充栋汗牛).
自己写个Active X或许可以实现
你说的这种方法我也想过。
但是不会写Active X。这要怎么写呀?
binger819623 2006-08-24
  • 打赏
  • 举报
回复
我在网上看到,这个功能应该能够实现的。即使不用FILE元素,应该有其它的方法
binger819623 2006-08-24
  • 打赏
  • 举报
回复
to SafeSoft() :我的邮箱是qiuer623@tom.com

谢谢呀!解决了一定给分!
timerri 2006-08-24
  • 打赏
  • 举报
回复
最好的方式是做个activex来做这个操作。

如果这项技术能够仅仅依靠浏览器来解决的话,估计这个浏览器会被立马淘汰!!!!!

你访问我的网页,我就把你硬盘上的隐私信息打个包上传上来....世界就大同了....
zuguanqun 2006-08-24
  • 打赏
  • 举报
回复
up ,可以多写几个file 啊,呵呵,这样不就是多文件上传了吗?/
qingzhuang 2006-08-24
  • 打赏
  • 举报
回复
up
SafeSoft 2006-08-24
  • 打赏
  • 举报
回复
上传 下载 打包 压缩 EXCEL操作 都有 我也说不清 里面还有个共通的check类 还有很多发不上去了 你要的话就发邮件给我吧 zerobugforsoftware@163.com
wys512 2006-08-24
  • 打赏
  • 举报
回复
还是用applet上传,自己开个线程监视上传的目的位置,如果有.zip文件执行解压,上边都有程序了,你组装一下就可以了,呵呵
binger819623 2006-08-24
  • 打赏
  • 举报
回复
自己项一下
zhmt 2006-08-24
  • 打赏
  • 举报
回复
路过,友情up...
binger819623 2006-08-24
  • 打赏
  • 举报
回复
HttpConnector[8083] Starting background thread
这是什么意思呀?
lcllcl987 2006-08-24
  • 打赏
  • 举报
回复
能打包客户端的文件夹吗?好像不可以把?
就算用applet,如果没有授权,也是不能访问客户端文件系统的
binger819623 2006-08-24
  • 打赏
  • 举报
回复
顺便问一下。这是什么错误呀?
Boolean maxLengthExceeded = (Boolean) request
.getAttribute(MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED);

这一句的错误提示是:"UpLoadForm.java": cannot resolve symbol: variable ATTRIBUTE_MAX_LENGTH_EXCEEDED in interface org.apache.struts.upload.MultipartRequestHandler at line 40, column 39

说明一下,我前包已经导入了:
import org.apache.struts.upload.MultipartRequestHandler;
xiangbo520 2006-08-23
  • 打赏
  • 举报
回复
表单中的FILE元素是无法选定文件夹的,只能选定单个文件,你死心吧.
自己写个Active X或许可以实现
wangpeng8675 2006-08-23
  • 打赏
  • 举报
回复
关注一下
binger819623 2006-08-23
  • 打赏
  • 举报
回复
to SafeSoft() :首先谢谢你,但你的例子我还有些不太明白。
能否说明一下。


我的QQ:27438740
MSN:binger819@hotmail.com
binger819623 2006-08-23
  • 打赏
  • 举报
回复
先感谢SafeSoft() 的回答。你的方法我先试试。
SafeSoft 2006-08-23
  • 打赏
  • 举报
回复
package Excel.doExcel;

import java.io.File;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Category;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.Action;
import org.springframework.mail.javamail.MimeMessageHelper;

/**
*
* @author caoxiang
* 文件下载
*/

public class download extends Action{

//定义logger
private transient Category logger = Category.getInstance(this.getClass().getName());

private static final String MAPPING_SUCCESS = "success";
private static final String MAPPING_FALSE = "success";

//文件下载的处理
public ActionForward execute(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws IOException {


//如果下载文件还有乱码问题,需要修改相应代码
String filename = new String( request.getParameter("filename").getBytes("GBK"),"8859_1");

//指定虚拟目录以下你的文件的所在地
String filepath = request.getRealPath("/Excel/" +filename);
//System.out.println(filepath);
String f=URLDecoder.decode(filename,"UTF-8");
System.out.println(f);
//MimeMessage mm=jmail.createMimeMessage();
//MimeMessageHelper messageHelper=new MimeMessageHelper(mm,true,"GB2312");
//对文件是否为空进行约束
/*if(isNull(filename)) {

logger.debug("下载出错,文件为空");
return mapping.findForward(MAPPING_FALSE);

}

//对文件格式进行约束
if(checkChar(filename)) {

logger.debug("下载出错,文件格式不符合要求");
return mapping.findForward(MAPPING_FALSE);

}

//对文件路径进行约束,判断下载文件是否存在
if(checkFile(filepath)) {
logger.debug("下载出错,找不到指定的文件");
return mapping.findForward(MAPPING_FALSE);
}

//对文件的类型进行约束,判断下载的文件是否属于指定的文件类型,这里指定的是Excel文件类型
if(checkFileType(filename)) {
logger.debug("下载出错,文件类型错误");
return mapping.findForward(MAPPING_FALSE);
}*/
//指定一个输出文件流,用来进行下载缓存
//excel.readXsl(1,8);

//读取文件完毕,将文件输出到Property文件中

//未完待续,重新压入,然后再本地创建字符缓存的字符型数据,最后将数据延迟在缓存中输出一定数据量,进行界面输出缓存
SafeSoft 2006-08-23
  • 打赏
  • 举报
回复
package fileUpload;
import java.io.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import fileUpload.UpLoadForm;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileInputStream;
import java.util.ArrayList;

/**
* <p>Title:UpLoadAction</p>
* <p>Description: QRRSMMS </p>
* <p>Copyright: Copyright (c) 2004 jiahansoft</p>
* <p>Company: jiahansoft</p>
* @author 曹翔
* @version 1.0
*/

public class UpLoadAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
UpLoadForm theForm = (UpLoadForm) form;
String filePath = request.getRealPath("/");//取当前系统路径
FormFile file = theForm.getTheFile();//取得上传的文件
System.out.println(theForm.getTheFile());
try {
InputStream stream = file.getInputStream();//把文件读入

ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream bos = new FileOutputStream(filePath + "/" +
file.getFileName());
//System.out.println();
//建立一个上传文件的输出流
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {

bos.write(buffer, 0, bytesRead);//将文件写入服务器
}

bos.close();
stream.close();
}catch(Exception e){
System.err.print(e);
}

String fileToBeRead=filePath + "/" +
file.getFileName();

try{
ArrayList mylist=new ArrayList();
//UploadActionList load=new UploadActionList();
// 创建对Excel工作簿文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
// 创建对工作表的引用。
// 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
//HSSFSheet sheet = workbook.getSheet("Sheet1");
HSSFSheet sheet = workbook.getSheetAt(0);
// 也可用getSheetAt(int index)按索引引用,
// 在Excel文档中,第一张工作表的缺省索引是0,
// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
// 读取左上端单元
HSSFRow row = sheet.getRow(0);
HSSFCell cell1 = row.getCell((short)0);
HSSFCell cell2 = row.getCell((short)1);
//输出单元内容,cell.getStringCellValue()就是取所在单元的值
System.out.println("左上端单元是: " + cell1.getNumericCellValue());
//load.setOneStr(cell1.getStringCellValue());
//load.setOneStr(cell2.getStringCellValue());
//mylist.add(load);
request.setAttribute("mylist", mylist);
request.setAttribute("data",row);

}catch(Exception e) {
System.out.println("已运行xlRead() : " + e );
}
File f=new File("c:\\aa.txt");
f.deleteOnExit();
request.setAttribute("dat",file.getFileName());

return mapping.findForward("display");


}
}
加载更多回复(13)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧