0

AJAXとHTML5を使用して、クライアントコンピューターからサーバー上のフォルダーへのファイルのアップロードを処理しようとしています。

私は、ユーザーが自分のマシンでファイルを参照して選択できるようになっています。ボタンをクリックするとupload、ファイルのアップロードを完了するために必要なスクリプトが実行されると想定されます。ここで行き詰まります。upload.phpスクリプトを使用してこのファイルアップロード機能の機能をコーディングし続ける方法がわかりません。

私の質問は、サーバー上のフォルダーがと呼ばれると仮定することですdocsdocsユーザーがアップロードボタンをクリックした後、ユーザーが選択したファイルをサーバーフォルダーにダウンロードするにはどうすればよいですか?

何か提案をいただければ幸いです。

よろしくお願いします!

JQuery

    $.ajax({
        url: 'upload.php',  //server script to process data
        type: 'POST',
        xhr: function() {  // custom xhr
            myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // check if upload property exists
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
        success: function(data){
            alert("OK");
            $('body').html(data);
        },
        // Form data
        data: formData,
        //Options to tell JQuery not to process data or worry about content-type
        cache: false,
        contentType: false,
        processData: false

    });

HTML

    <form enctype="multipart/form-data">
    <input name="file" type="file" />
    <input type="button" value="Upload" />
    </form>
    <progress></progress>
4

1 に答える 1

2

このコードはあなたのセットアップで機能するはずです。基本的に、最初のifステートメントで何かをアップロードしているかどうかをチェックします。次に、ファイルが2番目のステートメントに存在するかどうかを確認します。そうでない場合は、ファイルをアップロードフォルダに移動します。

<?php
if ($_FILES["file"]["name"] != NULL) {
  if (file_exists("upload/" . $_FILES["file"]["name"]))
    echo $_FILES["file"]["name"] . " already exists. ";
  else
    move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
}
?>

.phpスクリプトには、適切なアクセス許可と、それを配置するフォルダーが必要であることを忘れないでください。私はそれをすべきだと信じ766ています。

また、ajaxにエラーを追加する必要があります。成功した後、以下を追加してください

error : function(XMLHttpRequest, textStatus, errorThrown) {
  console.log('An Ajax error was thrown.');
  console.log(XMLHttpRequest);
  console.log(textStatus);
  console.log(errorThrown);
},
于 2013-03-12T23:49:31.223 に答える