2013-03-12 53 views
0

我正在嘗試使用AJAX和HTML5處理從客戶端計算機上的文件上傳到服務器上的文件夾。使用AJAX/HTML上傳文件5

我在用戶可以瀏覽他們機器上的文件的點選擇它。點擊upload按鈕是假設執行必要的腳本來完成文件上傳,這是我卡住的地方。我不確定如何使用upload.php腳本繼續編碼此文件上載功能的功能。

我的問題是,假設服務器上的文件夾被稱爲docs。如何在用戶點擊上傳按鈕後,將用戶選擇的文件下載到服務器docs文件夾中?

我欣賞任何建議。

非常感謝提前!

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> 
+0

後,下面的這個學習AJAX文件上傳的時候幫助了我一堆:http://net.tutsplus.com/tutorials/javascript-ajax/uploading-files-with-ajax/ – 2013-03-12 23:33:35

+1

我就像你不久前遇到過類似的問題。然而,我並不是真的想搞砸它,所以我使用了這個擴展:https://github.com/blueimp/jQuery-File-Upload它很小,可配置並且易於設置。只是一個建議。 – GJK 2013-03-12 23:35:23

回答

2

我認爲此代碼應爲您的設置工作。基本上它會檢查你是否在第一條if語句中上傳了一些東西。然後它檢查文件是否存在於第二條語句中。如果沒有,則將文件移動到上傳文件夾中。

<?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); 
}, 
+0

感謝您的回覆,我會試一試!不是755的默認值? – AnchovyLegend 2013-03-12 23:51:47

+0

使用if(isset($ _ FILES [「file」] [「name」]))else可以生成通知 – Sam 2013-03-13 00:00:29

+0

文件夾和文件的權限應該是766,我已經更新了我的答案。此外,我的文件默認爲'644'和'755'文件夾。 – 2013-03-13 00:01:21