谁能给我发一个可以设置路径的上传下载的DEMO.
最好要简单点的.
本人比较笨
谢谢各位帮忙.
我在线等..急急急急急急急急急
------解决方案--------------------
上传的例子 “下载就是HERf你懂得”
- Java code
public static void copy(File src, File dst) { try { InputStream in = null ; OutputStream out = null ; /* File fl1=new File(Auxiliary.getStr(dst.getPath())); if(!fl1.exists()){ fl1.mkdirs(); }*/ try { in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE); out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE); byte [] buffer = new byte [BUFFER_SIZE]; while (in.read(buffer) > 0 ) { out.write(buffer); } } finally { if ( null != in) { in.close(); } if ( null != out) { out.close(); } } } catch (Exception e) { e.printStackTrace(); } } 复制的方法
------解决方案--------------------
这是我的
- Java code
import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.util.Iterator;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class UploadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=gb2312"); PrintWriter out = response.getWriter(); String uploadDir = this.getServletContext().getRealPath("/upload"); if (uploadDir == null) { out.println("无法访问储存目录!"); return; } File FUploadDir = new File(uploadDir); if (!FUploadDir.exists()) { // 创建目录` if (!FUploadDir.mkdir()) { out.print("无法创建存储目录!"); return; } } boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (!isMultipart) { out.print("只能处理multipart/form-data类型的数据"); return; } DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(1024 * 1024 * 5);// /超过5M的字段数据采用临时文件缓存 // 采用默认的临时文件存储位置 // fu.setRepositoryPath(...); // 设置上传的普通字段的名称和文件字段的文件名所采用的字符集编码 ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(1024 * 1024 * 200); // 最多上传200M数据 upload.setHeaderEncoding("gb2312"); // 得到所有表单字段对象的集合 List items = null; try { items = upload.parseRequest(request); } catch (FileUploadException e) { out.println("解析数据时出现如下问题:"); e.printStackTrace(out); return; } // 处理每个表单字段 Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) { // 如果是普通表单字段 String content = item.getString("GB2312"); String fieldName = item.getFieldName();//获取字段值 request.setAttribute(fieldName, content);//获取字段名 } else { try { String pathSrc = item.getName();//获取最初的文件名 /* 如果用户没有上传文件,则忽略对该字段的处理 */ if (pathSrc.trim().equals("")) { continue; } //如果是Opera 浏览器,则pathSrc还包涵路径信息,应将其过滤掉 int start = pathSrc.lastIndexOf('\\'); out.println("name:" + pathSrc); String fileName = pathSrc.substring(start + 1); File pathDest = new File(uploadDir, fileName); // item.write(pathDest);//写入磁盘 //自己实现的写入磁盘方法,可以实现一些特定功能,如显示上传进度条等。 OutputStream ops = new FileOutputStream(pathDest); InputStream ips = item.getInputStream(); int length = 0; byte[] byteBuff = new byte[400]; while(-1 != (length = ips.read(byteBuff))){ ops.write(byteBuff, 0, length); } ips.close(); ops.close(); String fieldName = item.getFieldName(); out.println("fieldname:" + fieldName); request.setAttribute(fieldName, fileName); } catch (Exception e) { out.println("存储文件时出现如下问题:"); e.printStackTrace(out); return; } finally // 总是立即删除保存表单字段内容的临时文件 { item.delete();//很重要,否则用自己实现的写入磁盘方法(非item.write)会产生临时文件 } } } // 显示处理结果 out.println("用户:" + request.getAttribute("author") + "<br>"); out.println("来自:" + request.getAttribute("company") + "<br>"); /* * 将上传的文件名组合成"file1,file2"显示处理,如果只上传第二个文件,只显示"file2",没有则显示无 */ StringBuffer filelist = new StringBuffer(); String file1 = (String) request.getAttribute("file1"); makeUpList(filelist, file1); String file2 = (String) request.getAttribute("file2"); makeUpList(filelist, file2); out.println("成功上传的文件:" + (filelist.length() == 0 ? "无" : filelist.toString())); } /** * @param result 要将当前字符追加进去的结果字符串 * @param fragment 要追加的字符串 */ private void makeUpList(StringBuffer result, String fragment) { if (fragment != null) { if (result.length() != 0) { result.append(","); } result.append(fragment); } }}