Spring MVC实现文件上传和下载
程序员文章站
2022-03-08 15:26:39
本文实例为大家分享了spring mvc实现文件上传和下载的具体代码,供大家参考,具体内容如下文件上传1、导入主要依赖
本文实例为大家分享了spring mvc实现文件上传和下载的具体代码,供大家参考,具体内容如下
文件上传
1、导入主要依赖
<!--文件上传--> <dependency> <groupid>commons-fileupload</groupid> <artifactid>commons-fileupload</artifactid> <version>1.3.3</version> </dependency> <!--servlet-api导入高版本的--> <dependency> <groupid>javax.servlet</groupid> <artifactid>javax.servlet-api</artifactid> <version>4.0.1</version> </dependency>
2、配置bean:multipartresolver(注:此bena的id必须为:multipartresolver , 否则上传文件会报400的错误!)
<!--文件上传配置--> <bean id="multipartresolver" class="org.springframework.web.multipart.commons.commonsmultipartresolver"> <!-- 请求的编码格式,必须和jsp的pageencoding属性一致,以便正确读取表单的内容, 默认为iso-8859-1 --> <property name="defaultencoding" value="utf-8"/> <!-- 上传文件大小上限,单位为字节(10485760=10m) --> <property name="maxuploadsize" value="10485760"/> <property name="maxinmemorysize" value="40960"/> </bean>
3、index.jsp
4、controller
@restcontroller public class filecontroller { //@requestparam("file") 将name=file控件得到的文件封装成 commonsmultipartfile 对象 //批量上传 commonsmultipartfile 则为数组即可 @requestmapping("/upload") public string fileupload(@requestparam("file") commonsmultipartfile file, httpservletrequest request) throws ioexception { //获取文件名 : file.getoriginalfilename(); string uploadfilename = file.getoriginalfilename(); //如果文件名为空,直接回到首页! if ("".equals(uploadfilename)) { return "redirect:/index.jsp"; } system.out.println("上传文件名 : " + uploadfilename); //上传路径保存设置 string path = request.getservletcontext().getrealpath("/upload"); //如果路径不存在,创建一个 file realpath = new file(path); if (!realpath.exists()) { realpath.mkdir(); } system.out.println("上传文件保存地址:" + realpath); inputstream is = file.getinputstream(); //文件输入流 outputstream os = new fileoutputstream(new file(realpath, uploadfilename)); //文件输出流 //读取写出 int len = 0; byte[] buffer = new byte[1024]; while ((len = is.read(buffer)) != -1) { os.write(buffer, 0, len); os.flush(); } os.close(); is.close(); return "redirect:/index.jsp"; } /* * 采用file.transto 来保存上传的文件 */ @requestmapping("/upload2") public string fileupload2(@requestparam("file") commonsmultipartfile file, httpservletrequest request) throws ioexception { //上传路径保存设置 string path = request.getservletcontext().getrealpath("/upload"); file realpath = new file(path); if (!realpath.exists()) { realpath.mkdir(); } system.out.println("上传文件保存地址:" + realpath); //通过commonsmultipartfile的方法直接写文件(注意这个时候) file.transferto(new file(realpath + "/" + file.getoriginalfilename())); return "redirect:/index.jsp"; } }
文件下载
index.jsp
controller
@requestmapping(value = "/download") public string downloads(httpservletresponse response, httpservletrequest request) throws exception { //要下载的图片地址 string path = request.getservletcontext().getrealpath("/upload"); string filename = "基础语法.jpg"; //1、设置response 响应头 response.reset(); //设置页面不缓存,清空buffer response.setcharacterencoding("utf-8"); //字符编码 response.setcontenttype("multipart/form-data"); //二进制传输数据 //设置响应头 response.setheader("content-disposition", "attachment;filename=" + urlencoder.encode(filename, "utf-8")); file file = new file(path, filename); //2、 读取文件--输入流 inputstream input = new fileinputstream(file); //3、 写出文件--输出流 outputstream out = response.getoutputstream(); byte[] buff = new byte[1024]; int index = 0; //4、执行 写出操作 while ((index = input.read(buff)) != -1) { out.write(buff, 0, index); out.flush(); } out.close(); input.close(); return null; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。