ssm框架多图片上传到数据库

假的程序猿 2018-05-16 03:59:31
我上传3个不同的图片,获取到的三个是一样的图片,大神们,请问一下如何解决,在此先谢过了!
...全文
613 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
判官丶 2019-08-22
  • 打赏
  • 举报
回复
引用 9 楼 qq_37892199 的回复:
引用 5 楼 QWERT4745 的回复:
你把代码贴出来,不要图片,我给你改,这么简单的逻辑都想不通的话,那你之前的代码是怎么写出来的
大佬,想请教你有关单图片上传,但同时也有其他比如名字,金额等的上传,多个不同类型的提交处理。可以留个可以联系的小号么,要崩了,想找大佬问问。
SSM的话 前端inputu里面的name和实体类中对应好,动态sql添加没错的话,能直接存到数据库的。
qq_37892199 2019-04-09
  • 打赏
  • 举报
回复
引用 5 楼 QWERT4745 的回复:
你把代码贴出来,不要图片,我给你改,这么简单的逻辑都想不通的话,那你之前的代码是怎么写出来的
大佬,想请教你有关单图片上传,但同时也有其他比如名字,金额等的上传,多个不同类型的提交处理。可以留个可以联系的小号么,要崩了,想找大佬问问。
QWERT4745 2018-05-16
  • 打赏
  • 举报
回复

@RequestMapping(value = "/addNews", method = RequestMethod.POST)
private String fildUpload(News news ,@RequestParam(value="file",required=false) MultipartFile[] file,  
            HttpServletRequest request)throws Exception{   
	//定义序号
	int count=1;
	for (MultipartFile mf : file) {
		if(!mf.isEmpty()){
			// 使用UUID给图片重命名,并去掉四个“-”
			String name = UUID.randomUUID().toString().replaceAll("-", "");
			// 获取文件的扩展名
			String ext = FilenameUtils.getExtension(mf
			.getOriginalFilename());  
			// 设置图片上传路径
			String url = request.getSession().getServletContext()
			.getRealPath("/upload");
			System.out.println(url);
			// 以绝对路径保存重名命后的图片
			mf.transferTo(new File(url + "/" + name + "." + ext));
			// 把图片存储路径保存到数据库
			String path="upload/" + name + "." + ext;
			if(count==1){
				news.setImg1(path);
			}else if(count==2){
				news.setImg2(path);
			}else if(count==3){
				news.setImg3(path);
			}
		}  
		count++;
	}  
	newsService.addNews(news);
	return "redirect:/newsList";
}  

代码没有经过测试,大概就是这个逻辑
假的程序猿 2018-05-16
  • 打赏
  • 举报
回复
引用 7 楼 QWERT4745 的回复:

@RequestMapping(value = "/addNews", method = RequestMethod.POST)
private String fildUpload(News news ,@RequestParam(value="file",required=false) MultipartFile[] file,  
            HttpServletRequest request)throws Exception{   
	//定义序号
	int count=1;
	for (MultipartFile mf : file) {
		if(!mf.isEmpty()){
			// 使用UUID给图片重命名,并去掉四个“-”
			String name = UUID.randomUUID().toString().replaceAll("-", "");
			// 获取文件的扩展名
			String ext = FilenameUtils.getExtension(mf
			.getOriginalFilename());  
			// 设置图片上传路径
			String url = request.getSession().getServletContext()
			.getRealPath("/upload");
			System.out.println(url);
			// 以绝对路径保存重名命后的图片
			mf.transferTo(new File(url + "/" + name + "." + ext));
			// 把图片存储路径保存到数据库
			String path="upload/" + name + "." + ext;
			if(count==1){
				news.setImg1(path);
			}else if(count==2){
				news.setImg2(path);
			}else if(count==3){
				news.setImg3(path);
			}
		}  
		count++;
	}  
	newsService.addNews(news);
	return "redirect:/newsList";
}  

代码没有经过测试,大概就是这个逻辑
非常感谢大神,因为图片上传我没有接触过,所以不咋会用,代码我刚试了一下,成功了。谢谢你
假的程序猿 2018-05-16
  • 打赏
  • 举报
回复
引用 5 楼 QWERT4745 的回复:
你把代码贴出来,不要图片,我给你改,这么简单的逻辑都想不通的话,那你之前的代码是怎么写出来的
@RequestMapping(value = "/addNews", method = RequestMethod.POST) private String fildUpload(News news ,@RequestParam(value="file",required=false) MultipartFile[] file, HttpServletRequest request)throws Exception{ for (MultipartFile mf : file) { if(!mf.isEmpty()){ // 使用UUID给图片重命名,并去掉四个“-” String name = UUID.randomUUID().toString().replaceAll("-", ""); // 获取文件的扩展名 String ext = FilenameUtils.getExtension(mf .getOriginalFilename()); // 设置图片上传路径 String url = request.getSession().getServletContext() .getRealPath("/upload"); System.out.println(url); // 以绝对路径保存重名命后的图片 mf.transferTo(new File(url + "/" + name + "." + ext)); // 把图片存储路径保存到数据库 news.setImg1("upload/" + name + "." + ext); news.setImg2("upload/" + name + "." + ext); news.setImg3("upload/" + name + "." + ext); } } newsService.addNews(news); return "redirect:/newsList"; }
贼皮滴小仙女 2018-05-16
  • 打赏
  • 举报
回复
引用 2 楼 QWERT4745 的回复:
你这种写法每次循环都重新设置三个图片地址了,所以结果就是只能取到最后一个文件。可以在for循环设置一个序号,每次循环set一次。 if(count==1) news.setImg1...这样类推,如果个数较多要做成灵活的,那就要用反射了
能发一下完整的代码吗,有需要,谢谢
QWERT4745 2018-05-16
  • 打赏
  • 举报
回复
你把代码贴出来,不要图片,我给你改,这么简单的逻辑都想不通的话,那你之前的代码是怎么写出来的
假的程序猿 2018-05-16
  • 打赏
  • 举报
回复
引用 2 楼 QWERT4745 的回复:
你这种写法每次循环都重新设置三个图片地址了,所以结果就是只能取到最后一个文件。可以在for循环设置一个序号,每次循环set一次。 if(count==1) news.setImg1...这样类推,如果个数较多要做成灵活的,那就要用反射了
写完整吗,我脑子不太好使,哈哈,谢谢啦
假的程序猿 2018-05-16
  • 打赏
  • 举报
回复
大神们呀,快来帮我解决一下吧,我快急死了
QWERT4745 2018-05-16
  • 打赏
  • 举报
回复
你这种写法每次循环都重新设置三个图片地址了,所以结果就是只能取到最后一个文件。可以在for循环设置一个序号,每次循环set一次。 if(count==1) news.setImg1...这样类推,如果个数较多要做成灵活的,那就要用反射了

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧