① springmvc 怎么将文件上传到linux服务器
Spring MVC为文件上传提供了直接的支持,这种支持是通过即插即用的MultipartResolver实现的。Spring使用Jakarta Commons FileUpload 技术实现了一个MultipartResolver实现类:CommonsMultipartResolver。Spring MVC上下文中默认没有装配MultipartResolver,因此默认情况下不能处理文件的上传工作。如果想要使用Spring的文件上传功能,需要先在上下文中配置MultipartResolver。第一步:配置MultipartResolver使用CommonsMultipartResolver配置一个MultipartResolver解析器:<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="UTF-8" p:maxUploadSize="5242880" p:uploadTempDir="upload/temp" />defaultEncoding必须和用户jsP的pageEncoding属性一致,以便正确读取表单的内容。uploadTempDir是文件上传过程所使用的临时目录,文件上传完成后,临时目录中的临时文件会被自动清除。第二步:编写文件上传表单页面和控制器JSP页面如下:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <h1>选择上传文件</h1> <form action="<%=basePath%>user/upload.do" method="post" enctype="multipart/form-data"> 文件名:<input type="text" name="name" /><br/> <input type="file" name="file" /><br/> <input type="submit" /> </form> </body></html>注意:负责上传的表单和一般表单有一些区别,表单的编码类型必须是"Multipart/form-data"控制器UserController如下:package com.web;import java.io.File;import java.io.IOException;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;@Controller@RequestMapping(value = "/user")public class UserController { @RequestMapping(value = "/upload.do") public String updateThumb(@RequestParam("name") String name, @RequestParam("file") MultipartFile file) throws IllegalStateException, IOException { if (!file.isEmpty()) { file.transferTo(new File("d:/temp/" + name + file.getOriginalFilename().substring( file.getOriginalFilename().lastIndexOf(".")))); return "redirect:success.html"; } else { return "redirect:fail.html"; } }}Spring MVC会将上传文件绑定到MultipartFile对象中。MultipartFile提供了获取上传文件内容、文件名等内容,通过transferTo方法还可将文件存储到硬件中,具体说明如下:byte[] getBytes() :获取文件数据 String getContentType():获取文件MIME类型,如image/pjpeg、text/plain等InputStream getInputStream():获取文件流String getName():获取表单中文件组件的名字String getOriginalFilename():获取上传文件的原名long getSize():获取文件的字节大小,单位为byteboolean isEmpty():是否有上传的文件void transferTo(File dest):可以使用该文件将上传文件保存到一个目标文件中源码:uploadtest.zip
② 关于spring mvc 上传图片保存到数据库的问题。
文件上传基本思路1. 在一个 html 网页中,写一个如下的form :<form method=post encType=multipart/form-data action='xx'> <input name="userfile1" type="file" ><br><input name="userfile2" type="file"><br><input name="userfile3" type="file"><br><input name="userfile4" type="file"><br>text field :<input type="text" name="text" value="text"><br><input type="submit" value=" 提交 "><input type=reset> <form>2. 服务端 servelet 的编写现在第三方的 http upload file 工具库很多。Jarkata 项目本身就提供了fileupload 包http://jakarta.apache.org/commons/fileupload/ 。文件上传、表单项处理、效率问题基本上都考虑到了。在 struts 中就使用了这个包,不过是用 struts 的方式另行封装了一次。这里我们直接使用 fileupload 包。至于struts 中的用法,请参阅 struts 相关文档。这个处理文件上传的 servelet 主要代码如下:public void doPost( HttpServletRequest request, HttpServletResponse response ) {DiskFileUpload diskFileUpload = new DiskFileUpload(); // 允许文件最大长度diskFileUpload.setSizeMax( 100*1024*1024 ); // 设置内存缓冲大小diskFileUpload.setSizeThreshold( 4096 ); // 设置临时目录diskFileUpload.setRepositoryPath( "c:/tmp" );List fileItems = diskFileUpload.parseRequest( request );Iterator iter = fileItems.iterator(); for( ; iter.hasNext(); ) {FileItem fileItem = (FileItem) iter.next(); if( fileItem.isFormField() ) { // 当前是一个表单项 out.println( "form field : " + fileItem.getFieldName() + ", " + fileItem.getString() ); } else { // 当前是一个上传的文件String fileName = fileItem.getName();fileItem.write( new File("c:/uploads/"+fileName) ); } }}
③ java spring mvc 客户端上传文件到服务器端
Web文件上传采用POST的方式,与POST提交表单不同的是,上传文件需要设置FORM的enctype属性为multipart/form-data.由于上传的文件会比较大,因此需要设置该参数指定浏览器使用二进制上传。如果不设置,enctype属性默认为application/x-www-form-urlencoded,使用浏览器将使用ASCII向服务器发送数据,导致发送文件失败。上传文件要使用文件域(<input type='file'/>,并把FORM的Enctype设置为multipart/form-data.
④ 如何在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="http://www.springframework.org/tags/form"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><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;@ControllerpublicclassUploadController{@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.InputStreamToFile(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方法,这个方法的具体内容如下:
/***文件重命名*/(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:纯手打,望采纳)
⑤ 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为文件名。