【问题标题】:How to implement jQuery direct upload to Cloudinary in a Java Servlet?如何在 Java Servlet 中实现 jQuery 直接上传到 Cloudinary?
【发布时间】:2013-04-21 01:45:06
【问题描述】:

我试图弄清楚如何使用 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 中实现这一点非常困难。

要完成这项工作,究竟需要发生什么?

【问题讨论】:

    标签: java servlets cloudinary


    【解决方案1】:

    我放弃了等待答案并自己实现了一个。代码在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>
    

    在我们的 cloudinary-config.xml spring 配置中:

    <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 对象会从单例中清除,因此内存不会泄漏。

    我希望这对其他人有帮助!

    【讨论】:

      猜你喜欢
      • 2012-10-16
      • 2014-10-21
      • 2015-08-26
      • 2017-05-10
      • 2015-03-29
      • 2014-01-19
      • 2019-08-13
      • 2016-09-09
      • 2012-08-14
      相关资源
      最近更新 更多