⑴ springmvc+ajax上传图片的问题。传过去的是空值.怎么接收图片
因为SpringMVC只有GET请求才能通过方法上加参数获取到值,POST是不能通过这种方式获取的,可以通过request.getParameter(key) 或者 封装成对象(属性对应前端参数)会自动填充。另外我记得Ajax上传文件不能直接用$.ajax这种方式传,我的方法如下:var form = new FormData();var xhr = new XMLHttpRequest();xhr.open("post", "url", true);xhr.onload = function () {alert("上传完成!");};xhr.send(form);
⑵ asp.net mvc上传文件,我点击了浏览选择了图片,我要在客户端怎么获取图片的路径
在客户端看图片在服务器中的路径?直接看图片的URL地址就可以了
⑶ 如何在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:纯手打,望采纳)
⑷ asp.net mvc 上传照片保存到数据库
照片存到数据库,有两种方式,一种直接图片转成二进制文件存到数据库,另一种将图片放在服务器指定文件中,在数据库中存储图片物理路径,如果图片较多,建议存图片对应物理路径
⑸ 关于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) ); } }}