【问题标题】:Fine Uploader - using both Direct S3 and Traditional in same projectFine Uploader - 在同一个项目中同时使用 Direct S3 和传统
【发布时间】:2014-02-22 05:54:37
【问题描述】:

我有一个使用传统(上传到服务器)版本的小文件的现有 FineUploader 实现,效果很好。但是,我还希望允许从处理大附件的应用程序的不同部分直接上传 S3,而无需为小文件重写现有代码。

有没有办法让 Direct S3 和传统上传同时工作?这是一个单页应用程序,所以我不能只加载一个或其他精细上传器版本,具体取决于我所在的页面。

我尝试只包含两个精细上传 JS 文件,但它似乎破坏了我现有的代码。

客户端代码:

$uploadContainer = this.$('.uploader')
$uploadButton = this.$('.upload-button')
$uploadContainer.fineUploader(
  request:
    endpoint: @uploadUrl
    inputName: @inputName
    params:
      authenticity_token: $('meta[name="csrf-token"]').attr('content')
  button: $uploadButton
).on 'complete', (event, id, fileName, response) =>
  @get('controller').receiveUpload(response)

【问题讨论】:

  • 如果您尝试在同一页面上包含同一版本的多个构建,您会看到什么具体的错误消息?另外,您尝试加载哪些版本?这些自定义构建版本是通过基于 Web 的构建器实现的吗?
  • 谢谢!刚刚又试了一次。 1. 从传统风格的基于 Web 的构建器下载自定义构建,并使用该版本测试我的传统设置 - 它仍然运行良好。 2. 下载了 4.3.1 的 S3 自定义构建(两次都没有更改默认复选框),并将该 JS 文件也包含在我的应用程序中(当然是在重命名之后)。然后,当我尝试单击传统上传表单上的上传按钮时,出现此错误:dropbox.com/s/s8oeuahd49xe8q4/… 实际上来自 S3 JS 文件,而不是传统文件。
  • 这很可能是由您的集成代码引起的。加载两个版本后,请显示您的集成客户端代码。
  • 将其添加到原始问题中。没什么特别的,调用仍然是fineUploader() 而不是fineUploaderS3()。
  • 而且很清楚 - 如果我只删除 FineUploader S3 JS 文件,此代码就可以正常工作。

标签: amazon-s3 fine-uploader


【解决方案1】:

很好的发现,@Melinda。

Fine Uploader 位于自定义命名的命名空间中,因此它不会与其他潜在的全局变量冲突,这是 qq 命名空间(历史上命名)。发生的情况是,当您将其包含在页面上的 <script> 标记中时,每个自定义构建都会重新声明此命名空间以及所有成员对象。

我已经打开了an issue on our bug tracker,它在更多技术细节中解释了这个问题,我们正在寻求优先修复自定义页面,以便将来没有人会遇到这个问题。

【讨论】:

  • 在此期间 -- 由于您是许可证持有者 -- 如果您希望我们为您组装具有传统和 S3 端点的自定义版本,请随时发送电子邮件至 license@fineuploader.com一封电子邮件。
  • 哇,非常感谢!那太好了,我会通过电子邮件发送。
猜你喜欢
  • 2015-10-13
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多