问题标签 [carrierwave-direct]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
85 浏览

amazon-s3 - 什么时候不使用carrierwave_direct 处理版本?

我刚刚从carrierwave_backgrounder 切换到carrierwave_direct。我已经设置了carrierwave_direct 并且可以正常工作。即主文件正在上传,可以在视图中显示。但是,我的上传器版本没有被创建。

以下是我的工作:

carrierwave_direct 究竟何时处理版本——或者,carrierwave 何时指示处理版本?我假设使用费用.remote_receipt_url 加载原始图像,然后调用保存!触发上传者处理版本。那是对的吗?

无论如何,我的原始图像是通过后台作业上传的——但是,没有创建/上传版本。

我是否需要“recreate_versions”,即使它们以前不存在?在指向源文件后,我是否需要以某种方式显式处理版本,还是应该自动处理?

0 投票
1 回答
933 浏览

ruby - 使用 rails、carrierwave-direct 和 jquery 文件上传将文件上传到客户端的 s3

尝试从客户端上传时,我不断收到 403。这是因为桶上没有条件吗?如果我只指定密钥 - 没有访问密钥、签名或策略 - 它将正常上传。

桶策略:

CORS(由于是本地开发而开放)

签名生成

客户:

0 投票
1 回答
120 浏览

ruby-on-rails - Carrierwave_Direct + Rails 的问题

video_uploader.rb

模型.rb

参数:

错误显示是:

如果我将 VideoUploader 中的代码替换为:

然后文件被成功上传到 S3。但在我的情况下,我需要绕过托管应用程序的服务器,在后台直接上传视频到 S3。

请帮忙!

0 投票
1 回答
538 浏览

ruby-on-rails - 载波能直接上传到本地存储吗?

有时我远离互联网,仍然需要处理上传页面。Carrierwave Direct 似乎强制存储 :fog; 无法在开发中覆盖。
是否可以告诉 Carrierwave Direct 使用本地存储 (:file) 并简单地回退到 Carrierwave 的开发配置设置?

在开发配置设置下的carrierwave初始化程序中设置存储:文件不起作用...carrierwave_direct错误,来自“<%= direct_upload_form_for @uploader do |f| %>”的“不是公认的提供者”。

我试图解决carrierwave direct,但是在强制:fog、期望重定向url和期望direct_upload_form_for表单方法之间……carrierwave_direct非常负责。

在开发中使用 storage :file 将是carrierwave_direct gem 的一个受欢迎的功能。有谁知道如何干净地做到这一点?

0 投票
1 回答
62 浏览

ruby-on-rails - Carrierwave Direct AWS4

我已按照说明直接设置carrierwave,但出现以下错误。

我可以单独使用 Carrierwave 进行上传。但是,当我使用 Carrierwave Direct 时,它简单地失败了。我的 S3 存储桶在伦敦,我不知道这是否会影响它。我一次又一次地经历了一切,但似乎无法解决这个问题?

0 投票
0 回答
52 浏览

ruby-on-rails - 回归测试 Heroku 请求超时

我的 Rails 应用程序当前有一个缩略图上传端点,由于 30 秒的请求限制,该端点经常在 Heroku 上超时。我使用Carrierwave并希望切换到CarrierWaveDirect,通过直接上传到 S3 来解决问题。

在此之前,我想编写一个回归测试并看到它因请求超时而失败。我怎样才能做到这一点?

我的大多数测试都是高级 Selenium/capybara 测试,所以我尝试编写一个存根控制器操作以始终引发超时错误的测试:

这失败了,因为request在块的上下文中未定义。在我进一步讨论之前,为这种情况编写测试的最佳方法是什么?

0 投票
1 回答
66 浏览

ruby-on-rails - Carrierwave 直接 gem 安装错误

我有一个名为我的 rails 项目的上传器BulkImagesUploader,它接收一个 zip 文件并使用carrierwave. 这一直工作正常,但我发现自己必须使用carrierwave_directgem 将文件直接从浏览器上传到 S3。

我已按照 gems README 上的说明进行操作,但是我收到一条错误消息

下面是我的代码

宝石文件

初始化器

上传者

堆栈跟踪

此错误的原因可能是什么?

0 投票
0 回答
113 浏览

ruby-on-rails - 从 CarrierWave 雾中移植的 CarrierwaveDirect 版本文件名

所以我有 9000 多张原始图像,每张都有 5-7 个生成的大小,已经存储在 S3 上。将生产转移到 Heroku,我们遇到的问题之一是大型主图像超时。

开始尝试 Carrierwave Direct gem 直接进入 S3 存储,然后处理异步,但是一旦我将第三个包含行添加到基本上传器,就会遇到现有图像消失的问题:

CarrierwaveDirect 更改文件名格式(方法如下:https ://github.com/dwilkie/carrierwave_direct/blob/29caaa8d399968258299b57c84eac2e5e6fc4cf7/lib/carrierwave_direct/uploader.rb#L153 )

文件名以这种方式更改:

原始载波发生器: https://images.patchvault.org/uploads/issue/imageback/629/full_003b_a1_back.png

CW 直接网址生成: https://images.patchvault.org/uploads/issue/imageback/629/003b_a1_back_full.png

因此版本名称从上传文件名的开头移动到结尾。这实际上是有道理的,但我正在处理 2 年和 9k 图像:)

当我启用它include CarrierWaveDirect::Uploader时,BaseUploader它会更改在视图中生成 url 的方式,因此所有图像 404(因为它们不再存在)

  1. 这里的最佳做法是什么?我正在保存到 Fog,但由于它正在上传到 Heroku /tmp,我是否应该将处理移至异步?
  2. 我可以通过覆盖该方法来恢复行为还是不行?
  3. 有没有办法轻松地将 S3 上的图像文件名重写为新格式,还是不行?

对我也没有考虑的其他解决方案持开放态度:)

路径生成于base_uploader.rb

Rails 5.2.1、Ruby 2.5.2、Heroku-18 标准 2x dyno (web) 1x dyno (worker)。images.patchvault.org是 S3 存储桶上云端 CDN 发行版的 CNAME。

0 投票
1 回答
32 浏览

ruby-on-rails - Rails + CarrierwaveDirect:成功直接上传到S3后无法下载和处理图像

使用 Rails 6 和CarrierWaveDirect,我们能够成功地将文件发布到预签名的 S3 URL,但是当我们尝试将文件从 S3 下载到我们的服务器进行处理时遇到错误。

我们的模型和上传器如下所示:

S3 按预期响应我们的直接上传 (POST),如下所示:

docskey之后,我们通过将返回的属性保存到新模型来处理响应,如下所示:

这似乎工作正常,但是,当它尝试将文件从 S3 下载到我们的服务器进行处理时,由于400 Bad Request失败:

尽管有 400,但我可以确认这@file_attachment.file.url是一个有效的工作 URL,并且当通过浏览器访问该 URL 时,可以正常下载该文件。但由于某种原因,它无法从我们的应用程序中下载。

谁能发现我们做错了什么?或者有没有人知道更好的调试方法(“400 Bad Request”信息不足)。提前致谢!

这是我们的存储桶 CORS:

我们的环境细节:

提前致谢!

0 投票
0 回答
24 浏览

ruby-on-rails - 使用 CarrierWaveDirect gem 在模型中找不到“关键”属性

我一直在尝试使用 AWS 和 CarrierWave direct 实现直接上传。我正在关注文档。我有一个模型:AppNotice。它有一个名为 的列image。但是,似乎即使我的模型有 code mount_uploader :image, AppNoticesImageUploader,它也没有 key 属性。这是我的上传者app_notices_image_uploader.rb

还有我的 carriewrwave 配置文件:

我的上传表单非常简单,它与我的“普通”应用通知表单位于同一页面:

validateSize函数仅验证图像是否小于 5MB。应用程序通知表在它下面,它们之间没有任何关系。

这是我new对 app_notices_controller 的操作:

据说 CarrierWaveDIrect 自动添加了 key 属性,我无法访问它。所以 AppNotice 模型中应该有 and 属性key,但没有。

我的模型:

我发现的唯一问题是载波直接上没有 update_attribute 方法,并且没有一个解决方案对我有用。