15

だから私は自分が探しているものとそれを実装する方法を見つけるのに少し苦労しています。

基本的なPHPファイルアップローダーが機能しています。ユーザーがカスタムアップロードボタンを押してファイルを選択し、JSを使用して変更を確認し(つまり、ユーザーがファイルを選択)、画像をアップロードするフォームを送信します。大丈夫。

私が今欲しいのは、アップロード領域へのドラッグアンドドロップです。そのため、ユーザーはファイルエクスプローラーから画像をドラッグして、指定された場所(ページ全体ではなく)にドロップできます。フォームに画像がドロップされると、画像とともに自動的に送信され、同じPHP処理が使用されます。

これは可能で現実的ですか?

4

1 に答える 1

34

これは絶対に現実的であり、サードパーティのプラグインを使用しなくても可能です。

次のスニペットは、それがどのように機能するかについてのアイデアを与えるはずです。

ドロップエリア

$(".drop-files-container").bind("drop", function(e) {
    var files = e.originalEvent.dataTransfer.files;
    processFileUpload(files); 
    // forward the file object to your ajax upload method
    return false;
});

processFileUpload()-メソッド:

function processFileUpload(droppedFiles) {
         // add your files to the regular upload form
    var uploadFormData = new FormData($("#yourregularuploadformId")[0]); 
    if(droppedFiles.length > 0) { // checks if any files were dropped
        for(var f = 0; f < droppedFiles.length; f++) { // for-loop for each file dropped
            uploadFormData.append("files[]",droppedFiles[f]);  // adding every file to the form so you could upload multiple files
        }
    }

 // the final ajax call

       $.ajax({
        url : "upload.php", // use your target
        type : "POST",
        data : uploadFormData,
        cache : false,
        contentType : false,
        processData : false,
        success : function(ret) {
                 // callback function
        }
       });

 }

フォームの例

<form enctype="multipart/form-data" id="yourregularuploadformId">
     <input type="file" name="files[]" multiple="multiple">
</form>

このようなものを出発点として自由に使用してください。これのブラウザサポートはここで見つけることができますhttp://caniuse.com/#feat=xhr2

もちろん、プログレスバー、プレビュー、アニメーションなど、必要なものを追加できます...

于 2013-02-12T15:10:59.763 に答える