利用MultipartFile实现文件上传功能

时间:2021-05-19

在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的MultipartFile实现文件上传,感觉挺简单,在这里和大家分享一下。

一.主要有两个java类,和一般的servlet放在一起即可.

1.FileUploadBean.java

package chb.demo.web;import org.springframework.web.multipart.MultipartFile;/** * @author chb * */public class FileUploadBean { private MultipartFile file; public void setFile(MultipartFile file) { this.file = file; } public MultipartFile getFile() { return file; }}

2.FileUploadController.java

package chb.demo.web;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.validation.BindException;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.SimpleFormController;/** * @author chb * */public class FileUploadController extends SimpleFormController { protected ModelAndView onSubmit( HttpServletRequest request, HttpServletResponse response, Object command, BindException errors){ try { // cast the bean FileUploadBean bean = (FileUploadBean) command; // let's see if there's content there MultipartFile file = bean.getFile(); if (file == null) { throw new Exception("上传失败:文件为�空"); } if(file.getSize()>10000000) { throw new Exception("上传失败:文件大小不能超过10M"); } //得到文件�名 String filename=file.getOriginalFilename(); if(file.getSize()>0){ try { SaveFileFromInputStream(file.getInputStream(),"D:/",filename); } catch (IOException e) { System.out.println(e.getMessage()); return null; } } else{ throw new Exception("上传失败:上传文件不能为�空"); } // well, let's do nothing with the bean for now and return: try { return super.onSubmit(request, response, command, errors); } catch (Exception e) { System.out.println(e.getMessage()); return null; } } catch(Exception ex) { System.out.println(ex.getMessage()); return null; } } /**保存文件 * @param stream * @param path * @param filename * @throws IOException */ public void SaveFileFromInputStream(InputStream stream,String path,String filename) throws IOException { FileOutputStream fs=new FileOutputStream( path + "/"+ filename); byte[] buffer =new byte[1024*1024]; int bytesum = 0; int byteread = 0; while ((byteread=stream.read(buffer))!=-1) { bytesum+=byteread; fs.write(buffer,0,byteread); fs.flush(); } fs.close(); stream.close(); } }

二.配置文件中如下配置:

1.web.xml,利用spring mvc模式,大家应该都很熟悉了

<servlet> <servlet-name>chb</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>chb</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>

2.chb-servlet.xml,这里要配置映射,并可以设定最大可上传文件的大小

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://mandClass" value="chb.demo.web.FileUploadBean"/> <!-- 上传失败时跳转页面 --> <property name="formView" value="/user/err.jsp"/> <!-- 上传成功时跳转页面 --> <property name="successView" value="/user/confirmation.jsp"/> </bean></beans>

三.设定jsp页面

<form id="form1" method="post" action="upload.do" enctype="multipart/form-data"> <tr> <td width="25%" align="right">上传文件:</td> <td><input id="file" type="file" NAME="file" style="width:300px;"></td> </tr> <tr align="center" valign="middle"> <td height="60" colspan="2"><input type="submit" ID="BtnOK" value="确认上传"></td> </tr></form>

ok,现在就可以上传文件了,挺简单吧?这里我只列出了基本步骤,至于具体的操作(比如中文问题)可能就需要大家自己再完善完善了.

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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章