利用MultipartFile实现文件上传
利用MultipartFile实现文件上传
在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://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" 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,现在就可以上传文件了,挺简单吧?这里我只列出了基本步骤,至于具体的操作(比如中文问题)可能就需要大家自己再完善完善了.
转载于:https://www.cnblogs.com/hehe520/archive/2007/01/30/6330252.html
利用MultipartFile实现文件上传相关推荐
- java利用dropzone多文件上传
DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库, 它是轻量级的,不依赖任何其他类库(如JQuery)并且高度可定制.文档官网https://www.dropzonejs.com/ ...
- Spring Boot 利用WebUploader进行文件上传
Web Uploader WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势 ...
- 使用MultipartFile实现文件上传_SpringMVC
文章目录 一.单文件上传 1. 创建上传表单 2. 新增配置 3. 编写上传控制类 4. 接收参数 5.文件保存路径 6. 转存文件 二.多文件上传 2.1. 创建上传表单 2.2. 编写上传控制类 ...
- Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题
我们都知道普通的文件上传是通过表单进行文件上传的,还不能达到异步上传的目的.通过使用某些技术手段,比如jquery form.js可以达到异步上传的目的,但最重要的问题在于,它不能够进行多个文件的上传 ...
- java muti实现图片上传_使用MultipartFile实现文件上传
项目中会经常实现文件上传功能,比如在前台页面中设置上传文件按钮,后台保存文件至服务器,操作完成后前台展示上传结果,如上传成功或者上传失败信息.使用MultipartFile可以很容易的实现文件上传功能 ...
- Java MultipartFile实现文件上传并为图片加上水印(二)
防止走丢~~欢迎大家留言收藏点赞 在上一篇我们已经实现了文件的上传,那么如果对于图片的上传,我们要给图片加上我们需要的水印信息,比如图片的上传人,上传地点等信息,此时我们为上传功能再新增水印功能. 最 ...
- Java MultipartFile实现文件上传(一)
使用MultipartFile上传至本地或者文件服务器 直接上代码 一.前端上传至服务端(controller层) package com.cargps.common;import com.aliba ...
- Koa2利用koa-body实现文件上传需要注意的问题
koa-body是一款为实现文件上传的中间件. 本文主要就利用该插件实现上传时遇到的问题进行些整理. 1 ctx.request.files.file ---------->终端提示undef ...
- selenium autoit java_selenium+java利用AutoIT实现文件上传
1.AutoIT介绍 AutoIT是一个类似脚本语言的软件,利用此软件我们可以方便的实现模拟键盘.鼠标.窗口等操作,实现自动化. 2.实现原理 利用AutoIT编写合适的脚本,然后将脚本编译成可执行文 ...
最新文章
- 计算机地质应用软件,中国地质大学《质软件应用》作业报告.doc
- linux磁盘分配方案,安装Linux系统磁盘分配方案.doc
- UA MATH566 统计理论 Bayes统计基础
- unity服务器文件传输,Unity 3D简单C#文件发送到FPT服务器示例脚本?
- Python09 字典
- 无比震荡 Fedora Linux把密码输出都落实起来
- 【转】Linux单人维护密码
- Flutter入门三部曲(3) - 数据传递/状态管理 | 掘金技术征文
- sama5d3 环境检测 gpio--yk测试
- BZOJ-2005能量采集-数论函数
- 智能路由器-OpenWRT 系列三 (OpenWRT安装LuCI网络配置)
- springboot 上传文件解析入库_十五分钟用Spring Boot实现文件上传功能
- java中CS和BS_BS与CS的联系与区别【简】
- python解析接口_010 python接口 bs4解析html
- python文本处理的几个库_6个高效的语言处理Python库,你用过几个?
- 读书笔记 --- 组织结构设计
- “阻塞(pend)”与“挂起(suspend)”的区别?
- ### LinuxCBT VBOX Edition ###
- Google三驾马车——GFS、MapReduce、Bigtable
- MAXIMO开发代码记录
热门文章
- 【收藏】Linux系统常用命令速查手册(附赠PDF档)
- 【干货】常用的Linux 系统备份、恢复命令
- 【技术】一个由于时间问题引发的血案
- 面对不可避免的故障,我们造了一个“上帝视角”的控制台
- python建立回归模型_简单线性回归的Python建模方法
- html 自动隐藏属性,隐藏(属性) | hidden (attribute)
- php5.2.3 zend3,windows 2008 R2 下 IIS7.5+PHP5.2.17+Mysql5.5.16+Zend3.3.3
- ajax form表单提交_开发日志:金数据表单自动提交脚本
- 【CV秋季划】图像质量提升与编辑有哪些研究和应用,如何循序渐进地学习好?...
- 【通知】有三AI书籍和文化产品读者欢迎入群,送4本书!