Ответ 1
Браузер отправляет http-заголовок с именем файла. ( "Content-Disposition: filename = original_file.jpg" )
Rails делает это доступным как метод экземпляра временного файлового объекта: params[:avatar].original_filename
, а paperclip использует это.
Подробно, Rack анализирует множественную форму в Rack:: Utils:: Multipart:: UploadedFile и помещает хэш в параметры, которые включают :tempfile
и :filename
. Затем ActionDispatch:: Http:: Upload приходит и заменяет этот хэш объектом File (значение: tempfile), расширяя его с помощью модуля ActionDispatch:: Http:: UploadedFile, который добавляет переменную экземпляра для original_path
и метод original_filename
.