最近、写真をアップロードするという需要があります。コアコードの簡単な紹介です。
//上传图片
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;
}
これはサーバー上のnginxの構成ファイルです:nginx.conf
/ qr_codeを使用して、サーバー上のパスをマップします/ root / container / nginx / data / dist_20201217 /
これがわからない場合は、nginxを確認できます。
インターフェイステストに合格すると、URLアドレスが返され、返されたURLに直接アクセスして画像を表示できます。
ここでは、画像をローカルパスに保存するためのテストを行います。
1.パスを独自のローカルディレクトリに変更します。
String path = "D:/data/file/";
2.次の3行の許可をコメントアウトします
//赋予权限
//String command = "chmod 775 -R " + targetFile;
//Runtime runtime = Runtime.getRuntime();
//Process proc = runtime.exec(command);
//生成文件地址
url = path + "/" + fileName;
インターフェイスをテストして、ローカルパスに画像があるかどうかを確認します。