【问题标题】:Why can I only upload one file using Play and uploadify?为什么我只能使用 Play 和 uploadify 上传一个文件?
【发布时间】:2012-01-24 16:36:13
【问题描述】:

我写了这个simple Play-uploadify demo

我想要一个上传按钮,每次按下它都会自动上传一张图片。

由于某种原因,只有第一次按下按钮时,我才会上传。按下按钮一次后,除非我“取消”之前的上传,否则进一步按下不会导致任何事情。

(我不明白使用auto 模式取消上传的含义。也许问题是我的下载在某种意义上永远不会“完成”?)

这是我的操作方法:

public static void upload(File file, long userId){
    System.out.println("Uploaded file name " + file.getName() + 
      " by user " + userId);
}

还有对uploadify的调用:

$(function() {
    $("#uploader").uploadify({
        uploader    : '/public/libraries/uploadify/uploadify.swf',
        script      : '/Application/upload',
        cancelImg   : '/public/libraries/uploadify/cancel.png',
        folder      : '/uploads',
        fileExt     : '*.jpg;*.gif;*.png',
        fileDesc    : 'Image Files',
        fileDataName: 'file',
        scriptData: {userId: 123},
        auto: true
    });
});

此外,上传似乎永远不会完成 - 当我添加 onComplete 处理程序时,它不会触发。

【问题讨论】:

    标签: java javascript image playframework uploadify


    【解决方案1】:

    问题是我没有返回 HTTP 200 状态代码,因为我没有调用任何渲染方法或在我的操作方法结束时返回值。

    添加renderText("OK"); 解决了我的问题。

    ok(); 是一种更简洁的解决方法。

    【讨论】:

      【解决方案2】:

      试着改成

          script      : '/application/upload',
      

      (请注意应用程序中的小写a ...当您使用默认路由时,播放始终会生成小写的url。)

      至于一次只能上传一个文件:

      您是否在开发或生产模式下测试过上传? 在开发模式下,可用于处理的线程数量为 1, 所以它会在你想同时上传第二个文件时立即阻止

      【讨论】:

      • 我在开发模式下工作 - 但问题似乎与 Play 线程无关。 Play 操作方法只包含一个println(),并立即返回。即使完成后,客户端甚至无法开始上传另一个文件。也许我应该为 Uploadify 渲染一些东西以了解我正确处理上传?
      • 嗯...它只是返回?您应该在操作结束时至少执行一次 ok()。
      猜你喜欢
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 2013-01-01
      • 1970-01-01
      • 2012-07-10
      • 2011-12-15
      • 1970-01-01
      相关资源
      最近更新 更多