JQueryを介して独自の単純なAJAX画像アップロードスクリプトをコーディングしようとしています。いくつかのプラグインを見つけましたが、必要に応じてカスタマイズされすぎており、いずれも正しく機能しません。
ユーザーが画像をページにドラッグアンドドロップしたときをどうにかして検出したいだけです。そこから、そのデータをアップロードして/ cache /ディレクトリに移動し、さらにオプションを許可することは難しくないと確信しています。
しかし、今はドラッグアンドドロップ機能で完全に立ち往生しています。文字通り、私がこれにどのようにアプローチすべきかわかりません。どのようなイベントハンドラーが必要ですか?独自のイベントハンドラーをカスタムコーディングする必要がありますか?どんなアドバイスもいただければ幸いです
どのようなイベントハンドラーが必要ですか?
ドラッグアンドドロップにはHTML5ブラウザが必要ですが、今ではほとんどすべてです。
かなりのコードが必要になるため、最初から始めないことをお勧めします。jQueryプラグインとして実装するこのラッパーがとても気に入っています。
http://www.github.com/weixiyen/jquery-filedrop
クラスdivを使用してドキュメント内の要素を定義した後、次のコマンドでドロップされたファイルを受け入れるように初期化できます。
function fileSetUploadPercent(percent, divID){
var uploadString = "Uploaded " + percent + " %";
$('#'.divID).text(uploadString);
}
function fileUploadStarted(index, file, files_count){
var divID = getDivID(index, file);
createFileUploadDiv(divID); //create the div that will hold the upload status
fileSetUploadPercent(0, divID); //set the upload status to be 0
}
function fileUploadUpdate(index, file, currentProgress){
//Logger.log("fileUploadUpdate(index, file, currentProgress)");
var string = "index = " + index + " Uploading file " + file.fileName + " size is " + file.fileSize + " Progress = " + currentProgress;
$('#status').text(string);
var divID = getDivID(index, file);
fileSetUploadPercent(currentProgress, divID);
}
function fileUploadFinished(index, file, json, timeDiff){
var divID = getDivID(index, file);
fileSetUploadPercent(100, divID);
if(json.status == "OK"){
createThumbnailDiv(index, file, json.url, json.thumbnailURL);
}
}
function fileDocOver(event){
$('#fileDropTarget').css('border', '2px dashed #000000').text("Drop files here");
}
$(".fileDrop").filedrop({
fallback_id: 'fallbackFileDrop',
url: '/api/upload.php',
// refresh: 1000,
paramname: 'fileUpload',
// maxfiles: 25, // Ignored if queuefiles is set > 0
maxfilesize: 4, // MB file size limit
// queuefiles: 0, // Max files before queueing (for large volume uploads)
// queuewait: 200, // Queue wait time if full
// data: {},
// headers: {},
// drop: empty,
// dragEnter: empty,
// dragOver: empty,
// dragLeave: empty,
// docEnter: empty,
docOver: fileDocOver,
// docLeave: fileDocLeave,
// beforeEach: empty,
// afterAll: empty,
// rename: empty,
// error: function(err, file, i) {
// alert(err);
// },
uploadStarted: fileUploadStarted,
uploadFinished: fileUploadFinished,
progressUpdated: fileUploadUpdate,
// speedUpdated
});
アップロードを受け入れるWebページのビットにはこのHTMLがあります。
<div class='fileDrop'>
Upload a file by dragging it.
<span id='fileDropTarget'/>
</div>
ファイルドロップは外側の<div>で機能しますが、ユーザーがファイルをドロップする必要がある場所について混乱しないように、「DROPHERE」というNiceの大きなターゲットを作成するのは良いことです。
おそらく手遅れです。ただし、チェックアウトする必要があります http://www.dropzonejs.com/