开发者

Plupload Error Messages

I'm using Plupload with a rails app. The uploader allows users to submit images, but I require that the images be greater than a certain minimum pixel size. This is validated on the server side when processing an image received from Plupload.

Now, the upload开发者_高级运维er is working fine, but when a particular file fails the user sees an orange triangle and if they hover over it they get "HTTP error." That is pretty useless for the average user.

This is what I have in my rails controller right now:

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

How can I pass back the descriptive error messages from my application to Plupload so they can be displayed to the user in that orange triangle?

Do I need to return some json or xml, or something different? I've experimented with returning different representations of the failed image object, but so far nothing I've done has gotten my error messages picked up by Plupload.

I appreciate any help!


Multiple upload carrierware plupload

 #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>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜