Добавление сообщений об ошибках

Я использую Plupload с приложением rails. Загрузчик позволяет пользователям отправлять изображения, но я требую, чтобы изображения были больше определенного минимального размера в пикселях. Это проверяется на стороне сервера при обработке изображения, полученного от Plupload.

Теперь загрузчик работает нормально, но когда определенный файл не работает, пользователь видит оранжевый треугольник, и если он наводит на него курсор, он получает «Ошибка HTTP». Это довольно бесполезно для обычного пользователя.

Это то, что у меня есть в моем контроллере рельсов прямо сейчас:

def create
    @photo = current_user.photos.new(:image => params[:file])
    if @photo.save
        head :ok
    else
        head :bad_request
    end
end

Как я могу вернуть описательные сообщения об ошибках из моего приложения в Plupload, чтобы они могли отображаться для пользователя в этом оранжевом треугольнике?

Нужно ли мне возвращать json или xml или что-то другое? Я экспериментировал с возвратом различных представлений неудавшегося объекта изображения, но до сих пор ничего из того, что я делал, не приводило к тому, что мои сообщения об ошибках подхватывались Plupload.

Я ценю любую помощь!


person Andrew    schedule 27.08.2011    source источник
comment
Вы когда-нибудь находили решение этой проблемы? Я получаю то же самое Http Error при возникновении ошибок на стороне сервера, за исключением того, что я использую .NET.   -  person Mark Erasmus    schedule 28.08.2013
comment
Нет, так и не нашел обходного пути и перестал использовать Plupload.   -  person Andrew    schedule 29.08.2013


Ответы (1)


Множественная загрузка несущего ПО

 #app/controllers/adm/galerias_imagem.rb
    class Adm::GaleriasImagensController < ApplicationController
    layout "adm_layout"
    ....
     def create

      @adm_galerias_imagem = Adm::GaleriasImagem.new(adm_galerias_imagem_params)
        respond_to do |format|
          if @adm_galerias_imagem.save   
              head :ok
        else
            head :bad_request         
        end
      end

#app/views/adm/galerias_imagens/new.html.erb
<div id="filelist">Your browser doesn't have Flash, Silverlight or HTML5 support.</div>
<br />

<div id="container">
<a id="pickfiles" href="javascript:;">[Select files]</a> 
<a id="uploadfiles" href="javascript:;">[Upload files]</a>
</div>


<%= link_to 'Back', adm_galerias_imagens_path, class: "btn btn-default" %>

<% content_for :js do %>
$(function(){
  var uploader = new plupload.Uploader({
    runtimes : 'html5,flash,silverlight,html4',
    browse_button : 'pickfiles', // you can pass in id...
    container: document.getElementById('container'), // ... or DOM Element itself
    url : '<%= adm_galerias_imagens_path %>',
    multipart: true,
    max_file_size : '10mb',
    multipart_params: {
      "authenticity_token" : "<%= form_authenticity_token %>",
      '<%= Rails.application.config.session_options[:key] %>': '<%= request.session_options[:id] %>',
      "adm_galerias_imagem[galeria_id]": <%= params[:id] %>
    },
    flash_swf_url : '/assets/Moxie.swf',
    silverlight_xap_url : '/assets/Moxie.xap',
    file_data_name:"adm_galerias_imagem[imagem]",
    filters : {
      max_file_size : '10mb',
      mime_types: [
      {title : "Image files", extensions : "jpg,gif,png"},
      {title : "Zip files", extensions : "zip"}
      ]
    }
  });
uploader.bind('Init', function(up, params) {
  $('#filelist').html("<div>Current runtime: " + params.runtime + "</div>");
});
uploader.bind('FilesAdded', function(up, files) {
  $.each(files, function(i, file) {
    $('#filelist').append(
      '<div id="' + file.id + '">' +
      'File: ' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b>' +'</div>'
      );
});
});
uploader.bind('UploadProgress', function(up, file) {
  $('#' + file.id + " b").html(file.percent + "%");
});
$('#uploadfiles').click(function(e) {
  uploader.start();
  e.preventDefault();
});
uploader.init();
});
<% end %> 

#app/views/layouts/adm_layout.html.erb

    <!--Scripts-->
        <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
        <script type="text/javascript">
            <%= yield :js %>
        </script>
person gilcierweb    schedule 28.07.2014