您现在的位置是:首页 > 测评

springmvc存储上传(mvc中上传图片并显示出来)

867HJcbeopms 2024-04-12

一、springmvc文件上传路径设置

springmvc文件上传路径设置:

1、导入文件上传的坐标。

2、在spring-mvc.xml配置文件中配置文件解析器对象,property可以配置上传文件的大小等属性。注意:id一定要是multipartResolver。

3、前端页面的form表单,method是post方法,加上enctype="multipart/form-data"这个属性。

4、后端方法的参数类型为MultipartFile,参数名要与前端文件域的name一样。

5、最后用file参数的getOriginalFilename()方法获取上传的文件名,然后再用transferTo(参数1,参数2)方法将文件上传到指定路径。注:transferTo(参数1,参数2)的参数1为指定将文件上传的路径,参数2为文件名。

二、求SpringMVC大文件上传详解及实例代码

SpringMVC的文件上传非常简便,首先导入文件上传依赖的jar:

<!--文件上传所依赖的jar包-->

<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

<version>1.3.1</version>

</dependency>

在springMVC-servlet.xml配置文件中配置文件解析器:

<!--1*1024*1024即1M resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常-->

<!--文件上传解析器-->

<bean id="multipartResolver"

class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<property name="maxUploadSize" value="1048576"/>

<property name="defaultEncoding" value="UTF-8"/>

<property name="resolveLazily" value="true"/>

</bean>

注意解析器的id必须等于multipartResolver,否则上传会出现异常

import org.apache.commons.io.FileUtils;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.multipart.MultipartFile;

import org.springframework.web.multipart.commons.CommonsMultipartFile;

import java.io.File;

@Controller

public class FileController{

/**

*上传单个文件操作

* MultipartFile file就是上传的文件

*@return

*/

@RequestMapping(value="/upload1.html")

public String fileUpload1(@RequestParam("file") MultipartFile file){

try{

//将上传的文件存在E:/upload/下

FileUtils.copyInputStreamToFile(file.getInputStream(), new File("E:/upload/",

file.getOriginalFilename()));

} catch(Exception e){

e.printStackTrace();

}

//上传成功返回原来页面

return"/file.jsp";

}}

上传文件时,Controller的方法中参数类型是MultipartFile即可将文件映射到参数上。

页面:

file.jsp:

<form method="post" action="/upload1.html" enctype="multipart/form-data">

<input type="file" name="file"/>

<button type="submit">提交</button>

</form>

三、如何在spring***mvc中上传图片并显示出来

(1)在spring mvc的配置文件中配置:

<beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<propertyname="uploadTempDir"value="/tmp"/><!--临时目录-->

<propertyname="maxUploadSize"value="10485760"/><!--10M-->

</bean>

(2)文件上传表单和结果展示页fileupload.jsp:

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

<%@taglibprefix="mvc"uri=""%>

<%@taglibprefix="c"uri=""%>

<html>

<head>

<title>SpringMVC文件上传</title>

</head>

<body>

<h2>图片文件上传</h2>

<mvc:formmodelAttribute="user"action="upload.html"

enctype="multipart/form-data">

<table>

<tr>

<td>用户名:</td>

<td><mvc:inputpath="userName"/></td>

</tr>

<tr>

<td>选择头像:</td>

<td><inputtype="file"name="file"/></td>

</tr>

<tr>

<tdcolspan="2"><inputtype="submit"value="Submit"/></td>

</tr>

</table>

</mvc:form>

<br><br>

<c:iftest="${u!=null}">

<h2>上传结果</h2>

<table>

<c:iftest="${u.userName!=null}">

<tr>

<td>用户名:</td>

<td>${u.userName}</td>

</tr>

</c:if>

<c:iftest="${u.logoSrc!=null}">

<tr>

<td>头像:</td>

<td><imgsrc="${u.logoSrc}"width="100px"height="100px"></td>

</tr>

</c:if>

</table>

</c:if>

</body>

</html>

(3)后台处理UploadController.java:

packagecn.zifangsky.controller;

importjava.io.File;

importjava.io.IOException;

importjavax.servlet.http.HttpServletRequest;

importorg.apache.commons.io.FileUtils;

importorg.springframework.stereotype.Controller;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.RequestMethod;

importorg.springframework.web.bind.annotation.RequestParam;

importorg.springframework.web.multipart.MultipartFile;

importorg.springframework.web.servlet.ModelAndView;

importcn.zifangsky.model.User;

importcn.zifangsky.utils.StringUtile;

@Controller

publicclassUploadController{

@RequestMapping(value="/form")

publicModelAndViewform(){

ModelAndViewmodelAndView=newModelAndView("fileupload","user",newUser());

returnmodelAndView;

}

@RequestMapping(value="/upload",method=RequestMethod.POST)

publicModelAndViewupload(Useruser,@RequestParam("file")MultipartFiletmpFile,HttpServletRequestrequest){

ModelAndViewmodelAndView=newModelAndView("fileupload");

if(tmpFile!=null){

//获取物理路径

StringtargetDirectory=request.getSession().getServletContext().getRealPath("/uploads");

StringtmpFileName=tmpFile.getOriginalFilename();//上传的文件名

intdot=tmpFileName.lastIndexOf('.');

Stringext="";//文件后缀名

if((dot>-1)&&(dot<(tmpFileName.length()-1))){

ext=tmpFileName.substring(dot+1);

}

//其他文件格式不处理

if("png".equalsIgnoreCase(ext)||"jpg".equalsIgnoreCase(ext)||"gif".equalsIgnoreCase(ext)){

//重命名上传的文件名

StringtargetFileName=StringUtile.renameFileName(tmpFileName);

//保存的新文件

Filetarget=newFile(targetDirectory,targetFileName);

try{

//保存文件

FileUtils.copyInputStreamToFile(tmpFile.getInputStream(),target);

}catch(IOExceptione){

e.printStackTrace();

}

Useru=newUser();

u.setUserName(user.getUserName());

u.setLogoSrc(request.getContextPath()+"/uploads/"+targetFileName);

modelAndView.addObject("u",u);

}

returnmodelAndView;

}

returnmodelAndView;

}

}

在上面的upload方法中,为了接收上传的文件,因此使用了一个MultipartFile类型的变量来接收上传的临时文件,同时为了给文件进行重命名,我调用了一个renameFileName方法,这个方法的具体内容如下:

/**

*文件重命名

*/

publicstaticStringrenameFileName(StringfileName){

StringformatDate=newSimpleDateFormat("yyMMddHHmmss").format(newDate());//当前时间字符串

intrandom=newRandom().nextInt(10000);

Stringextension=fileName.substring(fileName.lastIndexOf("."));//文件后缀

returnformatDate+random+extension;

}

注:上面用到的model——User.java:

packagecn.zifangsky.model;

publicclassUser{

privateStringuserName;//用户名

privateStringlogoSrc;//头像地址

publicStringgetUserName(){

returnuserName;

}

publicvoidsetUserName(StringuserName){

this.userName=userName;

}

publicStringgetLogoSrc(){

returnlogoSrc;

}

publicvoidsetLogoSrc(StringlogoSrc){

this.logoSrc=logoSrc;

}

}

至此全部结束

效果如下:

(PS:纯手打,望采纳)

文章版权声明:除非注明,否则均为兜雅网原创文章,转载或复制请以超链接形式并注明出处。