0

Rails 3 のペーパークリップに問題があります。ファイルをアップロードすると、imagemagick get コマンドが原因でプロセッサがエラーをスローします。

「複合 - 重力南 /home/xxx/xxx/public/images/watermark.png /tmp/a s20121207-5819-1dq7y81.jpg /tmp/a s20121207-5819-1dq7y8120121207-5819-1juqw7a」

コンポジット: イメージ `/tmp/a' を開けません:

プロセッサー:

def make
  dst = Tempfile.new([@basename, @format].compact.join("."))
  dst.binmode

  if @watermark_path
    command = "composite"
    params = "-gravity #{@position} #{@watermark_path} #{fromfile} "
    params += tofile(dst)
    begin
      p " >>>>>>>>>>>>>>>>> #{command} #{params}"
      success = Paperclip.run(command, params)
    rescue PaperclipCommandLineError
      success = false
    end
    unless success
      raise PaperclipError, "There was an error processing the watermark for #{@basename}" if @whiny
    end
    return dst
  else
    return @file
  end
end

def fromfile
  File.expand_path(@file.path)
end

def tofile(destination)
  File.expand_path(destination.path)
end

ファイル名に空白またはその他の非アルファナム文字が含まれている場合にのみ発生します。/tmp/a は /tmp/a b.jpg である必要があります。

私はhttp://www.davesouth.org/stories/make-url-friendly-filenames-in-paperclip-attachmentsなどを試しましたが、それでもプロセッサのファイル名が間違っています

何か案は?またはこの問題で問題なく動作するプロセッサはありますか? :(

4

2 に答える 2

0

多分それを試してみてください:

dst = Tempfile.new([@basename, @format].compact.join(".").gsub(" ","")
于 2012-12-07T20:46:17.537 に答える
0

今日これに戻って、ImageMagic のドキュメント ( http://www.imagemagick.org/script/command-line-processing.php )のように、パスを引用符で囲むだけでよいことがわかりました。

If the image path includes one or more spaces, enclose the path in quotes:

'my title.jpg'

例として、私のプロセッサには次のものがあります。

command = "convert \"#{File.expand_path(@file.path)}\" -crop #{crop_area} -resize 150x150 \"#{File.expand_path(destination.path)}\""

Paperclip.run(command)

.

現在 Windows を使用していますが、一重引用符が機能していないようです。あなたと同じように、 @file の属性を変更しようとしましたが成功しませんでした。

それが役に立てば幸い。

于 2013-05-22T14:53:21.827 に答える