SpringBoot realizes uploading pictures

Recently there is a demand: upload pictures. Here is a brief introduction to the core code.

//上传图片
public BaseResponse uploadPicture(MultipartFile file, HttpServletRequest request, 									   HttpServletResponse response) {
    
    

        File targetFile = null;
        String url = "";//存储路径
        String fileName = file.getOriginalFilename();//获取文件名加后缀
        if (fileName != null && fileName != "") {
    
    
            String path = "/root/container/nginx/data/dist_20201217/";
            //String path = "D:/data/file/";
            String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());//文件后缀
            if (!(fileF.equals(".jpg") || fileF.equals(".jpeg") || fileF.equals(".png") || fileF.equals(".image"))) {
    
    
                return new BaseResponse(StatusCode.Fail, "只能上传jpg,jpeg,png,image格式");
            }
            //新的文件名
            fileName = new Date().getTime() + "_" + new Random().nextInt(1000) + fileF;
            //获取文件夹路径
            File file1 = new File(path);
            //如果文件夹不存在则创建
            if (!file1.exists() && !file1.isDirectory()) {
    
    
                file1.mkdirs();
            }
            //将图片存入文件夹
            targetFile = new File(file1, fileName);
            try {
    
    
                //将上传的文件写到服务器上指定的文件。
                file.transferTo(targetFile);
                //赋予权限
                String command = "chmod 775 -R " + targetFile;
                Runtime runtime = Runtime.getRuntime();
                Process proc = runtime.exec(command);
                //生成文件地址
                //url = "http://xxxxxx" + path + "/" + fileName;
                
                //这里的xxxxxxxxx是服务器的ip
                //我这里使用的服务器中,在nginx中配置了存放图片的路径,通过80端口qr_code映射服务				//器上的路径
                url = "http://xxxxxxxxx/qr_code"  + "/" + fileName;
                return new BaseResponse(StatusCode.Success, url);
            } catch (Exception e) {
    
    
                e.printStackTrace();
                return new BaseResponse(StatusCode.Fail, "系统异常,图片上传失败");
            }
        }
        return null;
    }

This is the configuration file of nginx on the server: nginx.conf

[External link image transfer failed. The source site may have an anti-hotlinking mechanism. It is recommended to save the image and upload it directly (img-u3YnAthv-1615950622397) (C:\Users\程梦月\AppData\Roaming\Typora\typora-user-images\ image-20210317110408561.png)]
Use /qr_code to map the path on the server /root/container/nginx/data/dist_20201217/

If you don't understand this, you can check nginx.

After the interface test passes, the url address will be returned, and we can directly visit the returned url to view the picture.

Here let's test to save the image to a local path.

1. Change the path to your own local directory.

           	 	String path = "D:/data/file/";

2. Comment out the following three lines of permission

      			//赋予权限
				//String command = "chmod 775 -R " + targetFile;
				//Runtime runtime = Runtime.getRuntime();
				//Process proc = runtime.exec(command);
                //生成文件地址
                url = path + "/" + fileName;

Test the interface to see if there are pictures in your local path.

Insert picture description here

Guess you like

Origin blog.csdn.net/hello_cmy/article/details/114920418