利用MultipartFile实现文件上传
在java中上传文件似乎总有点麻烦,没.net那么简单,记得最开始的时候用smartUpload实现文件上传,最近在工作中使用spring的MultipartFile实现文件上传,感觉挺简单,在这里和大家分享一下.
一.主要有两个java类,和一般的servlet放在一起即可.
1.FileUploadBean.java
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;
- }
- }
2.FileUploadController.java
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
- {
-
- FileUploadBean bean = (FileUploadBean) command;
-
-
- 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("上传失败:上传文件不能为�空");
- }
-
- 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();
- }
- }
-
二.配置文件中如下配置:
1.web.xml,利用spring mvc模式,大家应该都很熟悉了
xml 代码
- <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 代码
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
-
- <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">
-
- <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页面
xml 代码
- <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,现在就可以上传文件了,挺简单吧?这里我只列出了基本步骤,至于具体的操作(比如中文问题)可能就需要大家自己再完善完善了.
分享到:
相关推荐
"利用MultipartFile实现文件上传功能详解" 在Java Web开发中,文件上传是一个常见的需求,而MultipartFile是Spring框架中一个非常强大的工具,用于处理文件上传。本文将详细介绍如何使用MultipartFile实现文件上传...
总结来说,`MultipartFile`是Spring框架处理多文件上传的核心工具,结合前端的文件选择和`webuploader`等库可以实现断点续传功能,提升用户体验。在后台处理文件时,通常需要先执行数据库操作,确保数据一致性,然后...
Java 利用 MultipartFile 实现上传多份文件的代码 Java 中实现上传多份文件的代码是非常实用的技术,以下是关于 MultipartFile ...我们可以通过 MultipartFile 实现上传多份文件,并使用其提供的方法来处理文件上传。
然而,在实际操作中,我们可能需要将已有的`File`对象转换为`MultipartFile`,以便利用Spring MVC的文件上传功能。下面将详细介绍如何实现`File`到`MultipartFile`的转换以及相关的Maven配置。 ### 1. `File`转`...
本知识点将详细介绍如何利用OkHttp实现多文件上传,并结合服务器端代码来理解整个流程。 一、OkHttp简介 OkHttp是由Square公司开发的一个HTTP客户端库,它提供了一个简单、高效且强大的接口来处理网络请求。OkHttp...
本主题“基于nio实现的多文件上传源码”探讨的是如何利用Java NIO来实现高效的多文件上传功能,尤其对于小文件数量较大的情况。 首先,理解NIO的基本概念是必要的。NIO中的“非阻塞”意味着当数据不可用时,读写...
本项目的核心是利用Spring Boot的MVC特性来处理文件上传请求,以及构建一个安全、可靠且易于访问的文件服务。下面我们将详细探讨这个过程中的关键知识点。 1. **Spring Boot MVC**: Spring Boot MVC是Spring框架...
在Java SpringBoot框架中,处理大文件上传是一个常见的需求,特别是在大数据时代,用户可能需要上传GB级别的文件。传统的单次上传方式可能会面临超时、内存溢出等问题,因此,采用切割分片上传的方式能有效解决这些...
在本篇讨论中,我们将深入探讨如何利用Servlet实现文件上传功能,以及在这个过程中涉及的关键知识点。 首先,我们需要了解HTTP协议。HTTP协议是无状态的,这意味着每次请求都是独立的。因此,在客户端(通常是...
Labview FTP上传文件是利用Labview(Laboratory Virtual Instrument Engineering Workbench)这一强大的图形化编程环境,通过FTP(File Transfer Protocol)协议实现文件的远程传输。FTP是一种标准网络协议,用于在...
前端利用layui的upload组件提供友好的用户界面,后端借助SpringBoot的`MultipartFile`处理文件上传逻辑,两者协同工作,实现各种类型文件的多文件上传。这种技术方案在实际的Web应用开发中具有广泛的应用价值。
4. **定义服务接口**:创建一个服务接口,包含文件上传和下载的方法。例如: ```java public interface FileStorageService { void uploadFile(MultipartFile file); Resource downloadFile(String fileName); ...
总之,利用Uploadify插件,结合Java后端处理,可以轻松实现多文件上传、进度显示和取消上传等功能。这个完整的demo项目提供了一个可以直接使用的模板,对于有文件上传需求的开发者来说,是一个很好的起点。
- `@PostMapping("/upload")` 方法接收一个`MultipartFile`类型的参数`file`,这是Spring MVC处理文件上传的核心类。首先,我们定义一个外部文件服务器的上传接口URL,然后使用`RestTemplate`来调用这个接口。 - ...
标题“使用io实现文件上传”指的是利用Java的I/O机制处理客户端上传的文件数据。 首先,我们需要了解Java I/O流的基本概念。I/O流是Java提供的处理输入和输出数据的一种机制,分为字节流和字符流两大类。字节流处理...
在这个“SpringMVC文件上传,多文件上传实例”中,我们将深入探讨如何在SpringMVC环境中实现文件上传功能,包括单个文件上传以及多个文件的批量上传。 1. **文件上传原理**: 文件上传是通过HTTP协议的POST请求来...
总结,Android的文件上传涉及文件选择、读取、压缩、转换为流,以及利用Multipart请求将数据发送到服务器。同时,配合JSON数据可以传递更多的业务信息。理解并熟练运用这些技术,能够帮助开发者实现高效且稳定的文件...
2. **MultipartFile处理**:SpringBoot提供了`MultipartFile`接口,用于处理文件上传。它封装了文件内容、原始文件名、文件类型等信息,便于在服务器端进行操作。 3. **配置文件上传限制**:在SpringBoot中,可以...
在大文件上传方面,SpringBoot 提供了支持文件上传的API,我们可以利用这些API来处理文件接收和存储。 ### 分片上传 大文件分片上传是一种优化策略,通过将大文件拆分为多个小块(片段)进行上传,然后在服务器端...
本实验报告将详细阐述如何利用SpringMVC实现文件上传与下载的功能。 首先,文件上传的核心在于HTML表单(form)的正确配置。在创建用于上传文件的表单时,需要指定`enctype`属性为`multipart/form-data`。这是因为...