Проблемы с проверкой размера загружаемого файла изображения с использованием Ruby on Rails 3 - PullRequest
0 голосов
/ 30 января 2011

Я использую Ruby on Rails 3, и в своем контроллере я просто пытаюсь проверить, больше ли размер загружаемого изображения, чем заданное значение.

Мне это нужно, потому что я бы хотел, чтобы сервер перед сохранением файла изображения на жестком диске проверял загружаемое изображение, чтобы загрузка не начиналась, если размер изображения больше пользовательского значения: I хотел бы предотвратить перегрузку .

Я пытаюсь сделать это следующим образом:

if request.headers["CONTENT_LENGTH"]
  image_file_max_size ||= 16777216

  @user.errors.add( :image, "is too big") if ( request.headers["CONTENT_LENGTH"].to_i > image_file_max_size.to_i )
 end

# continue... (see UPDATES)

но, похоже, не работает. Кажется, значение CONTENT_LENGTH получается только после завершения загрузки, а не до.

Почему? Что случилось? Может быть, request.headers["CONTENT_LENGTH"] не «перехватывает» размер загружаемого изображения?


ОБНОВЛЕНИЕ для @ jamiew ( commenter )

Мой сервер настроен на Apache + Phusion Passenger . Я также использую Скрепка для бумаг драгоценный камень.

ОБНОВЛЕНИЕ для @ Джефф Пакетт ( комментатор )

В моем случае я выполняю AJAX-запрос , используя эту технику .

#continue

if @account.errors.empty?

  if @account.update_attributes(params[:users_account])
      flash.now[:notice] = "Good!"
  else
    flash.now[:notice] = "Bad!"
  end

  format.html { 
    render :action => 'edit' 
  }
  format.js {
    responds_to_parent do
      render :action => 'update.js.rjs'
    end
  }
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...