2017-03-14 1 views
0

Je cette créer une action pour extraire des données de doc et docx en utilisant la pierre précieuse docx et la pierre précieuse msworddoc-extracteurComment utiliser gem docx avec amazon s3?

if @subject.save 
    if @subject.odoc.present? 
     @odoc_url = @subject.odoc.url 
     if File.extname(URI.parse(@odoc_url).path) == ".docx" 
     @subject.homework= "" 
     doc = Docx::Document.open(@odoc_url) 
     doc.paragraphs.each do |p| 
      @subject.homework = @subject.homework+p.to_html 
     end 
     else 
     MSWordDoc::Extractor.load(@odoc_url) do |doc| 
      @subject.homework= doc.whole_contents 
     end 
     end 
     @subject.save 
    end 

maintenant, les fichiers doc fonctionne très bien .. Mon problème est avec doc = Docx::Document.open(@odoc_url) quand j'utilise le code sur ma machine locale cela fonctionne bien .. quand je pousse dans la production je reçois une erreur Zip::Error: File s3.amazonaws.com/~~~ not found Je ne suis pas vraiment sûr comment charger le fichier pour être accessible à la gem docx

+0

vous stockez probablement le fichier dans le système de fichiers de dev alors qu'en production, vous le stockez dans S3. téléchargez d'abord le fichier (essayez http://stackoverflow.com/questions/30179444/download-file-from-s3-to-rails-4-app) puis enregistrez-le localement puis poursuivez la lecture. – jvnill

+0

Dois-je le télécharger? je veux dire msworddoc-extracteur fonctionne très bien sans télécharger le fichier –

Répondre

0

Donc je l'ai finalement eu sans avoir à télécharger le fichier utilisant open-uri

doc = Docx::Document.open(open(@odoc_url).path)