java 图片上传

java图片上传

1、图片上传工具类

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile;

public class PicLoad {
	public static String upload(HttpServletRequest request,MultipartFile pictureFile,String fname) throws IOException {
		Map<String, String> map = new HashMap<String,String>();
		String imgPath=null;
		//上传图片
		if(!pictureFile.isEmpty()){
			// 使用UUID给图片重命名
			UUID uuid =UUID.randomUUID(); 
			String name = uuid.toString();
			// 获取文件的扩展名
			String extention = FilenameUtils.getExtension(pictureFile.getOriginalFilename());
			// 设置图片上传路径  获取项目根路径
			String url = request.getSession().getServletContext().getRealPath("");
			File file = new File(url + "/" + "upload" + "/" + fname+"/"+name + "." + extention);//"/" 代表反斜杠
			//判断目标文件所在目录是否存在
			if(!file.getParentFile().exists()){
			//如果目标文件所在的目录不存在则创建父目录
			file.getParentFile().mkdirs();
		}
			// 上传
			pictureFile.transferTo(file);
			//String objectPath = request.getSession().getServletContext().getContextPath();
			imgPath = "upload"+"/"+ fname+"/"+name + "." + extention;
		}
		return imgPath;//返回上传后的图片的路径
	}
}

2、jsp页面上传图片

<div class="image">
	<div class="article">
		<div class="item">
			<img class="addImg" onclick="clickImg(this);" src="${ctxStatic}/image/card1.PNG" />
			<input name="file" id="pic1" type="file" class="upload_input" onchange="change(this)" />
			<div class="preBlock">
				<img class="preview" id="preview" alt="" name="pic1" />
			</div>
			<img class="delete" onclick="deleteImg(this)" src="${ctxStatic}/image/delete.png" />
		</div>
		<div class="item">
			<img class="icon addImg" onclick="clickImg(this);" src="${ctxStatic}/image/card2.PNG" />
			<input name="file2" id="pic2" type="file" class="upload_input" onchange="change(this)"/>
			<div class="preBlock">
				<img class="preview" alt="" name="pic2" />
			</div>
			<img class="delete" onclick="deleteImg(this)" src="${ctxStatic}/image/delete.png" />
		</div>
	</div>

关键代码:

<input name="file" id="pic1" type="file" class="upload_input" onchange="change(this)" />

name属性的名字一定要和控制层的处理函数中传的参数名称相同,type属性的类型为file,在form表单提交的地方加上enctype="multipart/form-data",例如:

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

3、控制层

@RequestMapping("saveI")
	public String saveI(HttpServletRequest request,MultipartFile file,MultipartFile file2) throws IOException {
		XUser user = new XUser();
		user = xUserService.selectByPhone(xUser.getPhone());
		String fname = "identify";
		//xxx为项目名
		String pic1 = "/xxx/" + PicLoad.upload(request, file, fname);
		System.out.println(pic1);
		String pic2 = "/xxx/" + PicLoad.upload(request, file2, fname);
		System.out.println(pic2);
		user.setPic1(pic1);
		user.setPic2(pic2);
		xUserService.update(user);
		return "modules/front/job";
	}

MultipartFile后面对应的属性名要与jsp页面的name属性对应的名字相同,图片上传的文件名如下图所示:
在这里插入图片描述
这样就能顺利看到上传的图片了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值