栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM项目上传图片到本地项目路径,target包里却没有图片?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM项目上传图片到本地项目路径,target包里却没有图片?

SSM项目上传图片到本地项目路径,target包里却没有图片?

我的后台上传图片的代码是这样的:

@Controller
@Slf4j
public class FileController {

	private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

	public final String allowSuffix = ".bmp.jpg.jpeg.png.gif";

	// 根据实际修改图片存储路径
	
	public final String rootPath = "E:\project_money\project_test\paimai1\src\main\webapp\assets\img\uploads\images\";


	@RequestMapping(value = "/file/upload", method = RequestMethod.POST)
	@ResponseBody
	public JsonResult jsonResult(@RequestParam("file") MultipartFile file) {

		// 1.文件后缀过滤,只允许部分后缀
		// 文件的完整名称,如spring.jpeg
		String filename = file.getOriginalFilename();
		// 文件名,如spring
		String name = filename.substring(0, filename.indexOf("."));
		// 文件后缀,如.jpeg
		String suffix = filename.substring(filename.lastIndexOf("."));

		if (allowSuffix.indexOf(suffix) == -1) {
			return new JsonResult().error("不允许上传该后缀的文件!");
		}

	

		// 目标文件
		String fullPath = rootPath  + filename;

		File descFile = new File(fullPath);

		int i = 1;
		// 若文件存在重命名
		String newFilename = filename;
		while (descFile.exists()) {
			newFilename = name + i + suffix;
			String parentPath = descFile.getParent();
			descFile = new File(parentPath + File.separator + newFilename);
			i++;
		}

		// 判断目标文件所在的目录是否存在
		if (!descFile.getParentFile().exists()) {
			// 如果目标文件所在的目录不存在,则创建父目录
			descFile.getParentFile().mkdirs();
		}

		// 3.存储文件
		// 将内存中的数据写入磁盘
		try {
			file.transferTo(descFile);

		} catch (Exception e) {
			e.printStackTrace();
			
		}
		// 完整的url
		String fileUrl = "/assets/img/uploads/" +"images/"+ newFilename;
		
		return JsonResult.success(fileUrl);
	}
}

无论怎么改,上传图片时,只会在本地项目的路径保存,在target包里没有。这就导致了我每次上传图片都无法显示(webapp里是有图片的),只有重新打包后,之前传的图片才会在target包里显示。我甚至在传输图片文件时,也传一份到target包的路径,但还是没用,target包里依旧没有。
之后查阅资料发现,原来如果上传的路径是绝对路径的话,target包是不会保存临时图片的。
所以我把

public final String rootPath = "E:\project_money\project_test\paimai1\src\main\webapp\assets\img\uploads\images\";
改成
public final String rootPath = "paimai1\src\main\webapp\assets\img\uploads\images\";

问题解决,在上传时,除了本地项目有图片外,target包里也有了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/288473.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号