人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

jQueryプラグインの「jQuery File Upload」を使って画像アップロード時にサムネイルを表示したいのですがやり方が分りません。

具体的には

ユーザーがアップロードする画像を選択

クライアント(ブラウザ)側で画像のサムネイルを表示

自動的に画像をサーバーにアップロード

という流れを行いたいのですが、デモページ(後述)のソースを参考にしてもいまいち理解できませんでした。

具体的にどのような設定を最低限行えば動作しますでしょうか。簡単なサンプルで構いませんのでソース付きだと大変有り難いです。宜しくお願いします。


jQuery File Upload Demo
https://blueimp.github.io/jQuery-File-Upload/basic-plus.html

jQuery File Upload(ドキュメント)
https://github.com/blueimp/jQuery-File-Upload/wiki

●質問者: wankodon
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

下記サイトのようなプラグイン設置と簡単な使い方について質問しているわけではありませんので宜しくお願いします。
http://ocyadouzo.blogspot.jp/2013/06/jquery-file-upload.html


1 ● a-kuma3
●300ポイント ベストアンサー

デモのページのコードを、そぎ落としてみました。

<input id="fileupload" type="file" name="files[]" multiple>
<div id="files" class="files"></div>


<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//blueimp.github.io/jQuery-File-Upload/js/vendor/jquery.ui.widget.js"></script>
<script src="//blueimp.github.io/jQuery-File-Upload/js/jquery.iframe-transport.js"></script>
<script src="//blueimp.github.io/jQuery-File-Upload/js/jquery.fileupload.js"></script>
<script src="//blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js"></script>
<script src="//blueimp.github.io/jQuery-File-Upload/js/jquery.fileupload-process.js"></script>
<script src="//blueimp.github.io/jQuery-File-Upload/js/jquery.fileupload-image.js"></script>


<script>
$(function() {
 var url = "..."; // ※ファイルをアップロードする URL
 $('#fileupload').fileupload({
 url: url,
 dataType: 'json',
 autoUpload: true, // ※ファイルを選択したら、即、アップロード
 acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
 maxFileSize: 5000000, // 5 MB
 // Enable image resizing, except for Android and Opera,
 // which actually support image resizing, but fail to
 // send Blob objects via XHR requests:
 disableImageResize: /Android(?!.*Chrome)|Opera/
 .test(window.navigator.userAgent),
 previewMaxWidth: 100,
 previewMaxHeight: 100,
 previewCrop: true
 }).on('fileuploadadd', function (e, data) {
 data.context = $('<div/>').appendTo('#files');
 $.each(data.files, function (index, file) {
 var node = $('<p/>')
 .append($('<span/>').text(file.name));
 node.data(data)
 node.appendTo(data.context);
 });
 }).on('fileuploadprocessalways', function (e, data) {
 var index = data.index,
 file = data.files[index],
 node = $(data.context.children()[index]);
 if (file.preview) {
 node
 .prepend('<br>')
 .prepend(file.preview);
 }
 });
});
</script>

ファイルを指定したら、すぐにアップロードするように autoUpload のオプションを true にしています。

jQuery-File-Upload の外部スクリプトは、デモのページに向いていますが、ご自分のサーバに導入するときには、そちらの方を指すようにしてください。

https://blueimp.github.io/JavaScript-Load-Image/js/load-image.all.min.js は、jQuery-File-Upload には含まれていないと思いますが、これを読み込まないと、デモページの処理が動きません。



因みに、似たような質問が、stackoverflow にもありました。
http://stackoverflow.com/questions/21128634/jquery-file-upload-preview-image

回答のひとつは、デモのページと同じように fileuploadprocessalways のイベントを捕まえる方法。
もうひとつは、add のイベントを捕まえて、そこでアップロードまでしています。
評価は、add のイベントを捕まえる方が高いですが、autoUpload のオプションでアップロードする方が、プラグインの流儀に敵っているような気がします。


wankodonさんのコメント
無事に動作することができました。半分諦めかけてたので助かります。 回答どうもありがとうございました!

a-kuma3さんのコメント
難しいですよね、このプラグイン。 ドキュメントもしょぼいし (´・ω・`)

wankodonさんのコメント
便利なんですけどね。苦労します。。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ