SpringBoot realisiert das Hochladen von Bildern

Vor kurzem gibt es eine Nachfrage: Bilder hochladen. Hier ist eine kurze Einführung in den Kerncode.

//上传图片
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;
    }

Dies ist die Konfigurationsdatei von nginx auf dem Server: nginx.conf

[Die Bildübertragung für externe Links ist fehlgeschlagen. Die Quellwebsite verfügt möglicherweise über einen Anti-Hotlink-Mechanismus. Es wird empfohlen, das Bild zu speichern und direkt hochzuladen (img-u3YnAthv-1615950622397) (C: \ Benutzer \ 程 梦 App \ AppData \ Roaming \ Typora \ typora-user-images \ image-20210317110408561.png)]
Verwenden Sie / qr_code, um den Pfad auf dem Server / root / container / nginx / data / dist_20201217 / zuzuordnen.

Wenn Sie dies nicht verstehen, können Sie nginx überprüfen.

Nachdem der Schnittstellentest bestanden wurde, wird die URL-Adresse zurückgegeben, und wir können die zurückgegebene URL direkt aufrufen, um das Bild anzuzeigen.

Hier testen wir, um das Bild in einem lokalen Pfad zu speichern.

1. Ändern Sie den Pfad in Ihr eigenes lokales Verzeichnis.

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

2. Kommentieren Sie die folgenden drei Berechtigungszeilen aus

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

Testen Sie die Benutzeroberfläche, um festzustellen, ob sich Bilder in Ihrem lokalen Pfad befinden.

Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

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