Java实现本地上传图片以及读取

1.配置application文件

pro.image.path=D:/test/
pro.categoryImage.path=D:/category/

2.控制层

 	@Value("${pro.image.path}")
    private String proImagePath;


 @PostMapping("/system-port/productPicture")
    @ResponseBody
    public void updateProductPicture() {
        Map result = new HashMap<>();
        var req = readJson();
        var imageStr = req.get("fileData").toString();
        var fileType = req.get("fileType").toString();
        var fileName = req.get("fileName").toString();

        var fileMap = Map.of(
                "fileData", imageStr,
                "fileType", fileType,
                "fileName", fileName);

        result = productService.uploadCompanyImg(fileMap);
        //文件路径
        String path=proImagePath+fileName;
        //输出到文件路径下
        FileUtil.base64ToImage(imageStr,path);

        writeJson(result);
    }

3.工具层

  /**
     * base64到图片
     *
     * @param imageStr
     * @param path
     */
    public static void base64ToImage(String imageStr, String path) {


        Base64.Decoder decoder = Base64.getDecoder();
        String baseValue = imageStr.replaceAll(" ", "+");
        byte[] data = decoder.decode(baseValue.replace("data:image/png;base64,", ""));


        /*byte[] data = decoder.decode(imageStr);*/
        if (data.length < 3 || StringUtils.isEmpty(path)) {
            return;
        }

//        File filedir = new File(StringUtils.substringBeforeLast(path, File.separator));
//        if (!filedir.exists()) {filedir.mkdirs();}
        try {
            FileImageOutputStream imageOutput = new FileImageOutputStream(new File(path));
            try {
                imageOutput.write(data, 0, data.length);
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                imageOutput.close();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使Tomcat前端能够直接读取Java上传的本地图片,需要将上传的图片存储到Tomcat服务器的webapps目录下的一个文件夹中,然后将该文件夹作为静态资源目录配置到Tomcat的web.xml文件中。 具体步骤如下: 1. 在Tomcat服务器的webapps目录下创建一个文件夹,例如"upload"。 2. 在Java代码中,将上传的图片存储到该文件夹中,可以使用以下代码: ``` String uploadPath = request.getSession().getServletContext().getRealPath("/") + "upload/"; File uploadDir = new File(uploadPath); if (!uploadDir.exists()) { uploadDir.mkdir(); } String fileName = file.getOriginalFilename(); File dest = new File(uploadPath + fileName); file.transferTo(dest); ``` 3. 修改Tomcat的web.xml文件,将该文件夹配置为静态资源目录。在web.xml的<servlet>标签和<servlet-mapping>标签之间添加以下代码: ``` <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/upload/*</url-pattern> </servlet-mapping> ``` 4. 重启Tomcat服务器,然后在前端页面中可以使用以下代码来读取上传的图片: ``` <img src="/upload/图片名称.jpg" /> ``` 其中,"/upload/"是在web.xml中配置的静态资源目录,"图片名称.jpg"是上传的图片的名称。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值