上传图片和视频在JAVA上的运用

Java图像和视频上传
Cloudinary提供了一个API,用于将图像、视频和任何其他类型的文件上传到云端。上传到Cloudinary的文件通过安全备份和修订历史记录安全存储在云中。Cloudinary的API允许从您的服务器、直接从访问者的浏览器或移动应用程序或通过远程公共URL获取安全上传。
Cloudinary的Java SDK封装了Cloudinari的上传API并简化了集成。Java方法可用于轻松地将Java图像和视频上传到云,Java助手方法可用于直接从浏览器上传到Cloudinary。
本页介绍了使用Cloudinary上传Java图像和视频的常见使用模式。
有关所有可用上传选项和参数的详细信息,请参阅媒体上传文档和上传API参考的上传方法。


提示:Cloudinary的Upload widget提供了使用CloudinarySDK向应用程序添加上传功能的替代方案,从而无需开发内部交互式上传功能。上传小部件是一个交互式、功能丰富、易于集成的用户界面,使您能够向网站添加Cloudinary上传支持。只需几行JavaScript代码,就可以轻松地将小部件嵌入到web应用程序中。有关详细信息,请参阅上载小部件文档。



服务器端上传
您可以从Java代码将图像、视频或任何其他原始文件上载到Cloudinary。上传是通过HTTPS使用基于您帐户的api_key和api_secret参数的安全协议完成的。
 

Java图像上传
以下Java方法将图像上载到云:

import com.cloudinary.Cloudinary;
Cloudinary cloudinary = new Cloudinary();
cloudinary.upload(fileRef, ObjectUtils.emptyMap());

第一个参数是文件源,第二个参数是附加上传参数的映射map<String,Object>。此方法调用的结果是反序列化的服务器响应-同样,Map<String,Object>。如果出现服务器错误或HTTP错误,则会引发RuntimeException。
例如,上载名为my_image.jpg的本地图像文件:

File file = new File("my_image.jpg");
Map uploadResult = cloudinary.uploader().upload(file, ObjectUtils.emptyMap());

要上载的文件可以指定为本地路径、远程HTTP或HTTPS URL、白名单存储桶(S3或Google storage)URL、base64数据URI或FTP URL。有关详细信息,请参见文件源选项。
有关Upload方法参数的完整列表,请参阅Upload API参考中的Upload方法。
 

Java视频上传
你上传视频的方式与图片完全相同。但是,Upload方法只支持上传高达100 MB的文件。要上传更大的视频,请使用UploadLarge方法,该方法将大文件分块上传到云端。
UploadLarge方法具有与Upload方法相同的签名和选项,并添加了可选的ChunkSize参数(默认为20 MB)。
以下示例上载狗。mp4转换为Cloudinary,并将其存储在具有公共ID dog_closeup的双层文件夹结构中。它还执行两个急切的转换,将视频调整为正方形和小矩形。

cloudinary.uploader().upload("dog.mp4", 
    ObjectUtils.asMap("resource_type", "video",
    "public_id", "myfolder/mysubfolder/dog_closeup",
    "eager", Arrays.asList(
        new EagerTransformation().width(300).height(300).crop("pad").audioCodec("none"),
        new EagerTransformation().width(160).height(100).crop("crop").gravity("south").audioCodec("none")),
    "eager_async", true,
    "eager_notification_url", "https://mysite.example.com/notify_endpoint"));

上传响应
默认情况下,上传是同步执行的。一旦完成,上传的图像立即可用于转换和交付。您还可以使用UploadAsync方法执行异步上载。有关更多信息,请参见异步API方法。
上传调用返回一个JSON对象,其内容如下:

{
    "public_id":"tquyfignx5bxcbsupr6a",
    "version":1375302801,
    "signature":"52ecf23eeb987b3b5a72fa4ade51b1c7a1426a97",
    "width":1920,
    "height":1200,
    "format":"jpg",
    "resource_type":"image",
    "created_at":"2017-07-31T20:33:21Z",
    "bytes":737633,
    "type":"upload",
    "url":
        "https://res.cloudinary.com/demo/image/upload/v1375302801/tquyfignx5bxcbsupr6a.jpg",
    "secure_url":
        "https://res.cloudinary.com/demo/image/upload/v1375302801/tquyfignx5bxcbsupr6a.jpg",
    "etag":"1adf8d2ad3954f6270d69860cb126b24"
}

响应被自动解析并转换为Map。
响应包括用于访问上传媒体资产的HTTP和HTTPS URL,以及关于上传资产的其他信息:公共ID、资源类型、宽度和高度、文件格式、文件大小(字节)、用于验证响应的签名等。

直接从浏览器上传
上面提到的上传示例允许服务器端Java代码将媒体资产上传到Cloudinary。在此流程中,如果您有一个允许用户上传图像或视频的web表单,则媒体文件的数据会首先发送到您的服务器,然后才上传到Cloudinary。
一个更高效、更强大的选项是允许用户将客户端代码中的图像和视频直接从浏览器上传到Cloudinary,而不是通过服务器。这种方法允许更快的上传和更好的用户体验。它还减少了服务器的负载,降低了Java或JavaEE应用程序的复杂性。
您可以使用对上传端点的签名或未签名调用直接从浏览器上传,如使用表单上传多个文件示例所示。
对于来自客户端代码的签名上传,必须在服务器端Java代码中生成安全签名。您可以使用apiSignRequest方法生成SHA签名:

cloudinary.apiSignRequest(Map<String, Object> paramsToSign, String apiSecret);

猜你喜欢

转载自blog.csdn.net/std7879/article/details/127682745