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

时间:2018-08-18 21:03:52

标签: java cloudinary

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

要保留您上载的文件的原始文件名,可以将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