Spring MVC--11.文件上传
来源:互联网 发布:淘宝懒人软件靠谱么 编辑:程序博客网 时间:2024/06/05 09:20
1 文件上传—其他服务器
1.1 导入jar
跨服务器上传文件jar。Io,fileupload
1.2 需求
上传图片,图片里面回显。Ajax。页面不刷新图片回显。
Ajax能不能提交表单?
<img src=”图片路径”/>
//把文件关联表单
//触发ajax事件
<input type=file onchange=“ajax事件”/>
<input type=”hidden” value=”图片相对路径”/>
数据库保存相对路径
模拟2台服务器:
创建一个项目,图片服务器项目,图片服务器和上传图片的项目端口不一致。
1.3 Springmvc.xml开启文件上传
Springmvc配置文件配置支持文件上传类:
1.4 页面ajax
发送请求,上传图片:图片被关联表单。提交表单:jquery.form.js
回显:<img src=””>
上传:<input file= > onchange
1.5 uploadController
使用jersy服务器进行跨服务器上传:
@Controller@RequestMapping("/upload")public classUploadController { @RequestMapping("uploadPic") public voiduploadPic(HttpServletRequest request,String fileName,PrintWriter out){ //把Request强转成多部件请求对象 MultipartHttpServletRequestmh = (MultipartHttpServletRequest) request; //根据文件名称获取文件对象 CommonsMultipartFilecm = (CommonsMultipartFile) mh.getFile(fileName); //获取文件上传流 byte[] fbytes =cm.getBytes(); //文件名称在服务器有可能重复? StringnewFileName=""; SimpleDateFormatsdf = newSimpleDateFormat("yyyyMMddHHmmssSSS"); newFileName= sdf.format(newDate()); Randomr = newRandom(); for(int i =0 ;i<3;i++){ newFileName=newFileName+r.nextInt(10); } //获取文件扩展名 StringoriginalFilename = cm.getOriginalFilename(); Stringsuffix = originalFilename.substring(originalFilename.lastIndexOf(".")); //创建jesy服务器,进行跨服务器上传 Clientclient = Client.create(); //把文件关联到远程服务器 WebResourceresource = client.resource(Commons.PIC_HOST+"/upload/"+newFileName+suffix); //上传 resource.put(String.class, fbytes); //ajax回调函数需要会写写什么东西? //图片需要回显:需要图片完整路径 //数据库保存图片的相对路径. StringfullPath = Commons.PIC_HOST+"/upload/"+newFileName+suffix; StringrelativePath="/upload/"+newFileName+suffix; //{"":"","":""} Stringresult="{\"fullPath\":\""+fullPath+"\",\"relativePath\":\""+relativePath+"\"}"; out.print(result); } }
1.6 修改图片服务器文件上传权限
1.7 图片上传位置
1.8 重点—我草你大爷
2 上传图片—本地磁盘
2.1 配置虚拟目录 –用于存放上传图片
2.1.1 手动
在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加:
<Context docBase="D:\develop\upload\temp"path="/pic" reloadable="false"/>
访问http://localhost:8080/pic即可访问D:\develop\upload\temp下的图片。
2.1.2 图形化操作
也可以通过eclipse配置,如下图:
复制一张图片到存放图片的文件夹,使用浏览器访问
测试效果,如下图:
2.2 加入jar包
实现图片上传需要加入的jar包,如下图:
把两个jar包放到工程的lib文件夹中
2.3 配置上传解析器
在springmvc.xml中配置文件上传解析器
<!-- 文件上传,id必须设置为multipartResolver --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置文件上传大小 --> <property name="maxUploadSize"value="5000000"/></bean>
2.4 jsp页面修改
在商品修改页面,打开图片上传功能,如下图:
设置表单可以进行文件上传,如下图:
2.5 图片上传
在更新商品方法中添加图片上传逻辑
/** * 更新商品 * * @param item * @return * @throws Exception */@RequestMapping("updateItem")public String updateItemById(Item item, MultipartFile pictureFile) throws Exception { // 图片上传 // 设置图片名称,不能重复,可以使用uuid String picName = UUID.randomUUID().toString(); // 获取文件名 String oriName = pictureFile.getOriginalFilename(); // 获取图片后缀 String extName = oriName.substring(oriName.lastIndexOf(".")); // 开始上传 pictureFile.transferTo(new File("C:/upload/image/" + picName + extName)); // 设置图片名到商品中 item.setPic(picName + extName); // --------------------------------------------- // 更新商品 this.itemService.updateItemById(item); return "forward:/itemEdit.action";}
效果,如下图:
- Spring MVC--11.文件上传
- spring mvc 文件上传
- spring MVC 文件上传
- Spring MVC文件上传
- Spring MVC文件上传
- spring mvc 文件上传
- Spring mvc 文件上传
- spring mvc 文件上传
- spring mvc 上传文件
- spring mvc 上传文件
- spring mvc 文件上传
- spring mvc 上传文件
- spring mvc文件上传
- Spring MVC 文件上传
- spring mvc 文件上传
- spring mvc文件上传
- Spring MVC文件上传
- spring mvc 文件上传
- 【51Nod1476】括号序列的最小代价
- HDU
- Laravel
- Mybatis-generatior插件自动生成mapper文件
- 自制的轨迹球(鼠标)按键异常问题
- Spring MVC--11.文件上传
- Ubuntu云服务器搭建J2EE环境
- MySQL性能优化的最佳20+条经验
- Windows下Git基本操作
- Surrounded-Regions
- 软件开发应该具有人性化的特点
- Mongodb 系列
- 【EditText】关于EditText的一些坑
- HDU-1001 (基础题)