文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用MultipartFile怎么实现一个文件上传功能

2023-05-30 21:24

关注

使用MultipartFile怎么实现一个文件上传功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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

FileUploadBean.java

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

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;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;    }  }        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();     }    }

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

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>

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

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>  <!-- Multi-Action 用来标识method的变量名定义-->  <bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">    <property name="paramName">      <value>action</value>    </property>    <property name="defaultMethodName">      <value>index</value>    </property>  </bean>    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    <!-- one of the properties available; the maximum file size in bytes -->    <property name="maxUploadSize" value="10000000"/>  </bean>    <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">    <property name="mappings">     <props>      <prop key="/upload.do">fileUploadController</prop>     </props>    </property>  </bean>    <bean id="fileUploadController" class="chb.demo.web.FileUploadController">    <property name="commandClass" 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" ></td>  </tr>  <tr align="center" valign="middle">    <td height="60" colspan="2"><input type="submit" ID="BtnOK" value="确认上传"></td>  </tr></form>

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯