私はRails 5アプリを持っています。私はファイルアップロードのためにCarrierwaveを使用しています。開発環境や運用環境、PDF、JPG、PNGで正常にアップロードできます。ただし、doc、docx、xls、xlsxはアップロードされません。私は取得していますエラーメッセージは次のとおりです。Rails 5とCarrierwaveがdocxをアップロードしていない
Upfile Failed to manipulate with rmagick, maybe it is not an image?
Upfileは私のデータベース列(uploadedfileをの略)の名前です。
私は私のセットアップと私はこの問題を解決するために行った手順を説明します:私は呼んで、
gem "rmagick"
gem 'carrierwave', '~> 1.0'
gem 'fog'
私CarrierWaveアップローダーファイルで:
私はこれらの宝石を持っています
include CarrierWave::RMagick
storage :fog
pdf、png、jpg形式をアップロードできます。私は、このエラーメッセージが表示されますのdocxファイルアップロード時に
はしかし、:
Upfile translation missing: en.errors.messages.rmagick_processing_error
このエラーメッセージを修正するには、私はこの宝石を追加します。この宝石を追加する
gem 'carrierwave-i18n'
は、問題を解決し、
Upfile Failed to manipulate with rmagick, maybe it is not an image?
は、だから私はに進ん:私はDOCXファイルをアップロードしようとするが、その後、私は別のエラーメッセージが表示されます。このエラーをデバッグします。多分私のImageMagickライブラリが不完全で、私にdocxファイルを認識させる代理人がないと思っています。私が実行して代表団を見て:
convert -list configure
端末はその後、私を示しています
私が代表者で観察するものとDELEGATES bzlib mpeg freetype gslib jng jpeg lcms lzma png ps tiff xml zlib
、私はDOCX、DOC、xlssを読み取るために必要なすべてのコンポーネントを持っています、 xlsなど(私はxmlがzip xmlとして解釈されるdocxファイルを読むことを可能にする代理人だと信じています)。これが私の検索が終わる場所です。ここから解決策を見つけてもらえますか?
[回答あり] Marufのおかげで、私は答えを見つけることができました。私は私のPDFアップローダーファイルに持っていたコードされた(pdfuploader命名法を恩赦 - 私はpdfファイルのためだけにそれを使用することを計画していたが、その後WordやExcel形式が導入されました):
class PdfUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process resize_to_fit: [200, 200]
end
def extension_whitelist
%w(pdf doc html docx jpg jpeg gif png txt mp3 xls xlsx)
end
end
この問題に対する答えは削除されましたバージョンサムコードブロック。私はサムネイルが画像上でオプションで呼び出されたが、すべてのアップロードで実行されたようだという印象を受けました。私は知っていたはずです! :/
Maruf!あなたはまったく正しい。 version:thumb do ... process resize_to_fit:[200、200] .. end(擬似コード/擬似フォーマットを赦してください)。これは問題を作り出していました。私のdocxとxlsxファイルがアップロードされるようになりました。ありがとうございました! –