当前位置: 代码网 > it编程>编程语言>Java > jsp+servlet实现文件上传与下载功能

jsp+servlet实现文件上传与下载功能

2024年05月18日 Java 我要评论
本文实例为大家分享了jsp servlet实现文件上传与下载的具体代码,供大家参考,具体内容如下上传:需要导入两个包:commons-fileupload-1.2.1.jar,commons-io-1

本文实例为大家分享了jsp servlet实现文件上传与下载的具体代码,供大家参考,具体内容如下

上传:

需要导入两个包:commons-fileupload-1.2.1.jar,commons-io-1.4.jar

import java.io.file;
import java.io.ioexception;
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.disk.diskfileitemfactory;
import org.apache.commons.fileupload.servlet.servletfileupload;

/**
 * 上传附件
 * @author new
 *
 */
public class uploadannexservlet extends httpservlet {

 private static string path = "";

 public void doget(httpservletrequest request, httpservletresponse response)
 throws servletexception, ioexception {

 dopost(request, response);
 }

 /*
 * post处理
 * (non-javadoc)
 * @see javax.servlet.http.httpservlet#dopost(javax.servlet.http.httpservletrequest, javax.servlet.http.httpservletresponse)
 */
 public void dopost(httpservletrequest request, httpservletresponse response)
 throws servletexception, ioexception {

 path = this.getservletcontext().getrealpath("/upload");

 try {
 diskfileitemfactory factory = new diskfileitemfactory();
 servletfileupload up = new servletfileupload(factory);
 list<fileitem> ls = up.parserequest(request);

 for (fileitem fileitem : ls) {
 if (fileitem.isformfield()) {
  string fieldname = fileitem.getfieldname();
  //getname()返回的是文件名字 普通域没有文件 返回null
  //     string name = fileitem.getname();
  string content = fileitem.getstring("gbk");
  request.setattribute(fieldname, content);
 } else {
 
  string nm = fileitem.getname().substring(
  fileitem.getname().lastindexof("\\") + 1);
  file mkr = new file(path, nm);
  if (mkr.createnewfile()) {
  fileitem.write(mkr);//非常方便的方法
  }
  request.setattribute("result", "上传文件成功!");
 }
 }
 } catch (exception e) {
 e.printstacktrace();
 request.setattribute("result", "上传失败,请查找原因,重新再试!");
 }
 request.getrequestdispatcher("/pages/admin/annex-manager.jsp").forward(
 request, response);
 }

}

下载(i/o流)无需导包:

import java.io.ioexception;
import java.net.urlencoder;

import javax.servlet.servletexception;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;

/**
 * 下载文件
 * @author
 *
 */
public class downloadfilesservlet extends httpservlet {

 /**
 * 
 */
 private static final long serialversionuid = 8594448765428224944l;

 public void doget(httpservletrequest request, httpservletresponse response)
 throws servletexception, ioexception {

 dopost(request, response);
 }

 /*
 * 处理请求
 * (non-javadoc)
 * @see javax.servlet.http.httpservlet#dopost(javax.servlet.http.httpservletrequest, javax.servlet.http.httpservletresponse)
 */
 public void dopost(httpservletrequest request, httpservletresponse response)
 throws servletexception, ioexception {

 string name = request.getparameter("filename");

 system.out.print("dddddddddd:" + name);
 // web绝对路径
 string path = request.getsession().getservletcontext().getrealpath("/");
 string savepath = path + "upload";

 // 设置为下载application/x-download
 response.setcontenttype("application/x-download");
 // 即将下载的文件在服务器上的绝对路径
 string filenamedownload = savepath + "/" + name;
 // 下载文件时显示的文件保存名称
 string filenamedisplay = name;
 // 中文编码转换
 filenamedisplay = urlencoder.encode(filenamedisplay, "utf-8");
 response.addheader("content-disposition", "attachment;filename="
 + filenamedisplay);
 try {
 java.io.outputstream os = response.getoutputstream();
 java.io.fileinputstream fis = new java.io.fileinputstream(
  filenamedownload);
 byte[] b = new byte[1024];
 int i = 0;
 while ((i = fis.read(b)) > 0) {
 os.write(b, 0, i);
 }
 fis.close();
 os.flush();
 os.close();
 } catch (exception e) {

 }

 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com