2012-06-10 18 views
5

私はRailsアプリケーションでBlueimp jQuery File Uploadを使用しました。ユーザーがファイルを選択すると、サーバーにファイルをアップロードする前に、イメージのサムネイルとイメージの名前を表示する必要があります。Blueimp Jquery File Upload:サムネイルプレビュー画像が表示されません

私はこのプラグインをカスタマイズするためにdemoを参照しています。ファイルの名前を画面に表示することはできますが、サムネイルを表示することはできません。ここで

は、生成されたHTML

<!DOCTYPE html> 
<html> 
<head> 
    <title>Fileupload</title> 
    <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" /> 
<link href="/assets/jquery.fileupload-ui.css?body=1" media="all" rel="stylesheet" type="text/css" /> 
<script src="/assets/jquery.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery.ui.widget.js?body=1" type="text/javascript"></script> 
<script src="/assets/application.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery.tmpl.js?body=1" type="text/javascript"></script> 
<script src="/assets/load-image.min.js?body=1" type="text/javascript"></script> 
<script src="/assets/canvas-to-blob.min.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery.fileupload.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery.fileupload-fp.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery.fileupload-ui.js?body=1" type="text/javascript"></script> 
<meta content="authenticity_token" name="csrf-param" /> 
<meta content="Akp8GLPQ+DlFYI1g3CUA71hk0vg3G84aVwcVRHTlRUY=" name="csrf-token" /> 
</head> 
<body> 
<div class="files"> 
    <form action="/users" class="upload" id="fileupload" method="post"> 
    <input id="user_photo" name="user[photo]" type="file" /> 
    <div>Upload files</div> 
    </form> 

    <table class="upload_files"></table> 
</div> 
<!-- The template to display files available for upload --> 
<script id="template-upload" type="text/x-jquery-tmpl"> 
    <tr class="template-upload fade"> 
    <td class="preview"><span class="fade"></span></td> 
    <td class="name"><span>${name}</span></td> 
    </tr> 
</script> 
<script type="text/javascript" charset="utf-8"> 
    $(function() { 
     $('#fileupload').fileupload({ 
      add: function (e, data) { 
       console.log('add'); 
       $.each(data.files, function (index, file) { 
        console.log('Added file: ' + file.name); 
        //alert($('#tmpl-demo').tmpl(data)); 
        $('#template-upload').tmpl(data.files).appendTo('.upload_files'); 
       }); 
       var jqXHR = data.submit() 
         .success(function (result, textStatus, jqXHR) {/* ... */}) 
         .error(function (jqXHR, textStatus, errorThrown) {/* ... */}) 
         .complete(function (result, textStatus, jqXHR) { 
          console.log("complete"); 
          //$('.upload_files').append('<tr><td>'+ result +'</td></tr>'); 
         }); 
      }, 
      progress: function (e, data) { 
       console.log('progress'); 
      }, 
      start: function (e) { 
       console.log('start'); 
      }, 
      done: function (e) { 
       console.log('done'); 
      } 
     }).bind('fileuploadadd', function (e, data) { 
        console.log('fileuploadadd'); 
       }).bind('fileuploadprogress', function (e, data) { 
        console.log('fileuploadprogress'); 
       }).bind('fileuploadstart', function (e) { 
        console.log('fileuploadstart'); 
       }).bind('fileuploaddone', function (e) { 
        console.log('fileuploaddone'); 
       }); 


    }); 
</script> 
</body> 
</html> 

私は、ファイルを選択した後に生成されたHTMLを比較しています。唯一の違いはデモアプリケーション内の<canvas height="72" width="80"></canvas>要素が私のアプリケーションで見つからないことです。

設定に問題があるようです。ディスクからイメージを選択するとすぐにサムネイルを表示するように正しく設定するのを誰かが助けてくれますか?

答えて

3

これらのプレビューは、基本バージョンの一部ではありません。彼らはの一部である「完全なユーザーインターフェイス(jquery.fileupload-ui.js)を提供追加のプラグイン。

だから、あなたがそれらのjsファイルを含める必要があり、あなたはおそらく、いくつかのHTMLラッパーを必要とします。

デモのソースHTMLは、そのデモに含まれているので、確認してください。

$('body').append('<img src="' + URL.createObjectURL(data.files[0]) + '"/>'); 

URL.createObjectURL機能がhere文書化されています。このアドイン(E、データ)コールバック関数の内部、それに応じて独自のHTML要素を調整

+0

感謝。私はjquery.fileupload-ui.jsを使い、私の要求に合うように少し微調整しました。ありがとう。私はgithub上でデモアプリケーションを共有すると良い状態になっています。 –

37

場所。ファイルjquery.fileupload-ui.jsで

+4

これは余分なファイルを含める必要なしでうまくいった、ありがとう – evilcelery

+3

ありがとう、これは私が探していたものです。私はまだ追加トリガを変更するとプレビュー機能が削除される理由を理解できません。 –

+2

この素晴らしいソリューションをありがとう。このオプションのブラウザ要件は何ですか? –

0

編集機能_renderPreviews

_renderPreviews: function (data) {   
     data.context.find('.preview').each(function (index, elm) {    
      $(elm).append(data.files[index].preview); 
      $(elm).append('<img width="90" src="' + URL.createObjectURL(data.files[0]) + '"/>'); 
     }); 
    }, 
関連する問題