java - 如何使用java将图像上传到cloudinary中具有唯一public_id的特定文件夹?
问题描述
我已将我的项目配置为将图像上传到Cloudinary
(图像的云存储)。在我的 cloudinary 帐户中,我创建了一个名为我的应用程序名称的文件夹MyAppImages
。现在我的要求是我通过MyApp
应用程序上传的图像应该进入MyAppImages
文件夹。
使用我当前的代码,它将直接进入 Samples 文件夹。
我的代码:
{
String fileName=multipartFile.getOriginalFilename();
File physicalFile=new File(multipartFile.getOriginalFilename());
FileOutputStream fout=new FileOutputStream(fileDir.getName()+"/"+physicalFile);
fout.write(multipartFile.getBytes());
fout.close();
Cloudinary cloudinary = new Cloudinary(ObjectUtils.asMap(
"cloud_name", "my_cloud_name",
"api_key", "my_key",
"api_secret", "my_secret"));
File toUpload = new File("rowFiles/"+fileName);
Map params = ObjectUtils.asMap("public_id", "MyAppImages/"+fileName);
Map uploadResult = cloudinary.uploader().upload(toUpload, params );
System.out.println("==============>>"+uploadResult.get("url"));
cloudinaryImgURL=uploadResult.get("url").toString();
}
使用上面的代码,我可以将图像上传到特定目录MyAppImages
,但名称与原始图像名称完全相同。我想通过cloudinary
生成的随机名称存储它的图像,这样如果我两次上传相同的图像,它不应该像上面的代码那样用第二个上传的图像覆盖第一个图像。
解决方案
默认情况下,当使用 Cloudinary 的 API 进行上传时,Cloudinary 会为上传的图片设置一个随机生成的公共 ID。
您可以将 use_filename 参数设置为 true 以将上传的图像的公共 ID 设置为原始文件的名称。但是,图像的公共 ID 会附加一个随机字符串以确保唯一性。更多信息: http: //support.cloudinary.com/entries/26977753-Why-does-the-public-ID-include-additional-characters-appended-to-the-original-file-name-
推荐阅读
- javascript - 传递对象数组和 ID、Javascript 和 C#
- java - PSQLException:错误:“free_timeslots”列中的空值违反非空约束
- java - Spring - 在事务中调用两个存储过程,但在自动提交模式下运行每个过程
- java - 如何使 EditText 上的选定文本带下划线?
- react-native - Freshchat 用于反应原生错误文件提供程序错误
- android - 在 Android 中使用 LQI 进行 RSSI 平滑
- node.js - 在 Dialogflow 的 node.js 实现中将所有上下文设置为 0 的最简单和最佳实践方法是什么?
- c# - Powershell/C# XmlDocument 只选择没有属性的节点
- reactjs - 为什么在 React 类中不推荐使用 this.refs?
- elasticsearch-6 - 内部动态脚本编译过多,最大值:[75/5m]