单个上传,普通的form,普通的file:下面的是用来实现多个的,但是为了实现单个就只循环一次,不知道还有没别的办法~
- String uploadPath = "c:/";
- if(ServletFileUpload.isMultipartContent(request))
- {
- System.out.println("编码方式为:"+request.getCharacterEncoding());
- DiskFileItemFactory factory = new DiskFileItemFactory();
- factory.setRepository(new File(uploadPath));
- ServletFileUpload sfu = new ServletFileUpload(factory);
- sfu.setSizeMax(ConfigBean.getIntValue("permitFileSize"));
- List list=null;
- try {
- list = sfu.parseRequest(request);
- } catch (FileUploadException e1) {
- e1.printStackTrace();
- }
- Iterator it = list.iterator();
- int num = 0;
- while(it.hasNext())
- {
- FileItem fi = (FileItem) it.next();
- if(fi.isFormField())
- {
- System.out.println(fi.getFieldName());
- }
- else
- {
- String fileName = fi.getName();
- fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
- byte[] b = fi.get();
- String webPath =uploadPath+"\\"+fileName;
- request.setAttribute("webPath",webPath);
- BufferedOutputStream bos;
- try {
- bos = new BufferedOutputStream(new FileOutputStream(webPath));
- bos.write(b);
- bos.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- break;
- }
- }
- }
下载的:
代码是在这里找到的.呵呵~
- OutputStream out;
- try {
- out = response.getOutputStream();
- String filename = request.getParameter("filename");
- String filepath = "c:/"+filename;
- response.setContentType("application/octet-stream");
- response.setHeader("Content-Disposition","attachment;filename = "+filename);
- java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath);
- int c;
- byte[] buff = new byte[1000];
- while ((c = fileInputStream.read(buff, 0, 1000)) > 0) {
- out.write(buff, 0, c);
- out.flush();
- }
- out.flush();
- out.close();
- fileInputStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
界面上用一个连接:
xml 代码
- <a href='<%=webPath%>/chat/file.shtml?method=downLoad&filename=' title='点击接收' >文件名a>