如何使用java将图像上传到cloudinary中具有唯一public_id的特定文件夹?

Posted

技术标签:

【中文标题】如何使用java将图像上传到cloudinary中具有唯一public_id的特定文件夹?【英文标题】:How to upload images to specific folder with unique public_id in cloudinary using java? 【发布时间】:2019-01-25 12:12:37 【问题描述】:

我已将我的项目配置为将图像上传到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 生成的随机名称来存储它的图像,这样如果我两次上传相同的图像,它不应该像上面的代码那样用第二个上传的图像覆盖第一张图像。

【问题讨论】:

【参考方案1】:

默认情况下,使用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-

【讨论】:

【参考方案2】:

要保留您上传文件的原始文件名,您可以将 use_filename 参数设置为 true,Cloudinary 将使用上传图片的文件名作为公共 ID。 文件名被规范化并附加随机字符以确保唯一性。

要跳过添加确保唯一性的随机字符,您可以额外指定 unique_filename 参数,并将值设置为 false

来源: https://support.cloudinary.com/hc/en-us/articles/202520752-Can-I-upload-files-to-a-folder-while-keeping-their-original-file-names-

有关上传 API 调用参数的更多信息: https://cloudinary.com/documentation/image_upload_api_reference#required_parameters

【讨论】:

以上是关于如何使用java将图像上传到cloudinary中具有唯一public_id的特定文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何在节点中使用 multer 将图像上传到 cloudinary 并与其他数据一起表达

如何将图像上传到 Cloudinary - MERN 堆栈

如何使用自定义 url 和文件夹将图像上传到 cloudinary

如何将缓冲区图像上传到 cloudinary?

如何使用 javascript 将多个图像上传到 cloudinary 并将 url 发送到另一个数据库

如何将图像上传到 cloudinary