1

これは主に構文上の問題であり、私には理解できないようです。

これは私が今持っているものです:

    Zip::ZipFile.open(zipped_file, Zip::ZipFile::CREATE) do |zipfile|
      zipfile.each do |file|

        config = YAML.load_file(Rails.root + 'config/s3/s3.yml')[Rails.env]
        AWS.config config # instantiate AWS creds..

        # @filepath = .. I can't figure this out. How do I get a file and file path from a Zip::ZipEntry or ZipFile object to be able to upload a File object to S3..

        AWS.s3.buckets[config['bucket']].objects.create("quizzes/" + v['id'] + "/" + file.to_s, file: @filepath )

提案、ヒント、アイデア?ありがとう..

4

2 に答える 2

1

投稿したスニペットは、アーカイブを解凍するのではなく、実際には zip ファイルを作成しています。ドキュメントには、アーカイブの抽出に関する例があります。

ファイルについては ZipFsFile を、ディレクトリについては ZipFsDIR を確認ください。または、独自のディレクトリを指定して、アプリケーションのディレクトリに置かないようにすることもできます。

それが役立つことを願っています!

于 2013-11-05T18:46:12.007 に答える
1

わかりましたので、これは私がしたことです:

# zipped_file = the file in my params[:attachment]

file_list = Zip::ZipFile.open(zipped_file)
file_list.each do |file|
  filename = file.name
  basename = File.basename(filename)

  tempfile = Tempfile.new(basename)
  tempfile.binmode
  tempfile.write file.get_input_stream.read            

  s3_obj = bucket.objects[ 'attachments/' + filename ]
  s3_obj.write(tempfile)
end
于 2013-11-07T10:46:15.003 に答える