Rails, Stripe, CarrierWave, FileUpload, такого файла нет

У меня возникла проблема с загрузкой файла в Stripe с помощью API FileUpload. Я внедрил CarrierWave S3 для загрузки файлов на свой сайт. Я просмотрел всю документацию по Stripe API, но по какой-то причине она выдает ошибку «Нет такого файла или каталога @ rb_sysopen».

Вот мой код контроллера для загрузки:

@id_upload = Stripe::FileUpload.create(
  :purpose => 'identity_document',
  :file => File.new(@user.uploaded_file.url)
)

это вернет ошибку «нет такого файла» со ссылкой s3 (- https://myapp.s3.amazonaws.com/uploads/user/uploaded_file/1/file.png). Самое смешное, что когда я перехожу по этой ссылке в своем браузере, загруженный файл существует и отображается.

Какие-нибудь мысли? Я упускаю что-то очевидное?

Спасибо!


person gitastic    schedule 22.07.2016    source источник
comment
у тебя получилось? @gitastic   -  person hafiz ali    schedule 27.07.2016


Ответы (1)


Я не мог загрузить файл напрямую с Amazon S3 в Striple File Upload. Тем не менее, я перехожу по следующей ссылке, чтобы загрузить ресурс Amazon, чтобы сначала загрузить файл с Amazon S3 на веб-сервер, а затем отправить его на полосу: https://aws.amazon.com/blogs/developer/downloading-объекты-из-амазонки-s3-использование-авс-sdk-for-ruby/

гемфайл:

    gem 'aws-sdk', '~> 2'

В вашем клиенте:

    s3 = Aws::S3::Client.new
    resp = s3.get_object({ bucket:'your-bucket-name', key: current_user.stripe_managed_account.personal_id_document.file.path },
     target: '/tmp/personal_id_file_#{current_user.id}')

    stripe_file_upload =
      Stripe::FileUpload.create(
        :purpose => 'identity_document',
        :file => File.new('/tmp/personal_id_file_#{current_user.id}')
      )

    account ||= Stripe::Account.retrieve( current_user.stripe_managed_account.stripe_account_id )
    account.legal_entity.verification.document = stripe_file_upload.id
    account.save
person frank    schedule 09.04.2017