我试图弄清楚如何使用Java后端从用户的浏览器实现直接文件上传到Cloudinary。这类似于this question about node.js,但对于Java。
Cloudinary关于该主题的博文:
http://cloudinary.com/blog/direct_image_uploads_from_the_browser_to_the_cloud_with_jquery
在手动方法中非常稀疏,并没有详细说明确切的HTML / JS最终结果应该是什么样的,所以在Java中使用它很困难。
使这项工作到底需要做些什么?
答案 0 :(得分:0)
我放弃了等待答案并自己实施了一个。该代码位于this fork of the cloudinary_java project。
我还为官方的cloudinary_java项目创建了一个pull requeste。
您可以使用以下新功能:
<%@ taglib prefix="cl" uri="http://cloudinary.com/jsp/taglib" %>
...
<cl:upload tags="userProfilePhoto" fieldName="cloudinaryResource" />
<input type="hidden" name="cloudinaryResource" />
根据cloudinary的文档,您应该可以获取要上传的图像。然后,您将需要注册成功上载的处理程序,并找出如何将public_id和格式保存回服务器。
以下是使用cloudinary图像标记创建标记的示例:
<cl:image id="profilePhoto" crop="crop" height="120" width="120"
extraClasses="profilePhoto" publicId="${cloudinaryPublicId}" format="jpg" />
我们像这样配置Cloudinary:
cloudinary.api.key=<api-key-here>
cloudinary.api.secret=<api-secret-here>
cloudinary.cloud-name=<cloud-name-here>
<bean id="cloudinaryConfigMap" class="java.util.HashMap">
<constructor-arg>
<map key-type="java.lang.String" value-type="java.lang.String">
<entry key="api_key" value="${cloudinary.api.key}" />
<entry key="api_secret" value="${cloudinary.api.secret}" />
<entry key="cloud_name" value="${cloudinary.cloud-name}" />
<entry key="callback" value="$[app.url.base]/path/to/cloudinary_cors.html" />
</map>
</constructor-arg>
</bean>
<bean id="cloudinary" class="com.cloudinary.Cloudinary">
<constructor-arg index="0" ref="cloudinaryConfigMap" />
</bean>
<bean id="cloudinarySingleton" class="com.cloudinary.SingletonManager"
init-method="init" destroy-method="destroy">
<property name="cloudinary" ref="cloudinary" />
</bean>
这会从我们的配置系统配置Cloudinary,然后将结果存储在SingletonManager中。当Spring上下文关闭时,Cloudinary对象将从单例中清除,因此内存不会泄漏。
我希望这有助于其他人!