2012-03-21 113 views
1

Hy,我需要上傳一系列文件到服務器(在特定的一組圖像中)。 我需要一個文件輸入來選擇多個文件(也在IE中),我沒有權限直接用PHP寫在服務器上(權限是775,但FTP和Apache用戶分成2個不同的組),所以我需要使用FTP連接(我已經可以使用單個文件來完成此操作)。 有人可以通知我嗎? 在此先感謝HTML/PHP/JS選擇多個文件並通過FTP上傳

米歇爾

編輯:我試圖使用uploadify尼克建議。

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#file_upload').uploadify({ 
      'uploader' : 'JS/uploadify.swf', 
      'script' : 'upload.php', 
      'cancelImg' : 'JS/cancel.png', 
      'folder' : 'TEST/UPLOADS', 
      'auto'  : true, 
      'multiple' : true, 
      'removeCompleted' : false, 
      'queueSizeLimit' : 3, 
      'queueID' : 'queue', 
      'simUploadLimit' : 1 
     ); 
    }); 
</script> 

我試圖把FTP連接和ftp_put到upload.php的它是正確的? 如果我嘗試添加'scriptData'參數,它不能通過文檔建議的$ _POST []訪問,爲什麼?

這裏我的測試鏈接:test

試驗表明,文件會上傳,但在服務器的文件夾中沒有文件。

這裏是我的upload.php的代碼:

if (!empty($_FILES)) { 
    $tempFile = $_FILES['Filedata']['tmp_name'];       // 1 

    //$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'; // 2 
    //$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name']; // 3 


    $ftp_server = "***"; //address of ftp server. 
    $ftp_user_name = "***"; // Username 
    $ftp_user_pass = "***"; // Password 
    $conn_id = ftp_connect($ftp_server); 
    ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
    ftp_pasv ($conn_id, true); 

    if(ftp_fput($conn_id, 'TEST/' . $_FILES['Filedata']['name'], $tempFile, FTP_BINARY)){      // 4 
     echo true; 
    }else{ 
     echo false; 
    } 

    ftp_close($conn_id); 
} else { 
    echo false; 
} 

回答

0

要允許多個文件上傳我通常使用uploadify 它的文檔是相當不錯的,這是非常簡單易用。

你需要使用類似的東西來保持連接打開併發送文件而不用重新加載頁面。

編輯:

你的代碼應該是這樣的:

<script type="text/javascript"> 
$(function() { 
    $('#custom_file_upload').uploadify({ 
     'uploader'  : 'JS/uploadify.swf', 
     'script'   : 'JS/uploadify.php', 
     'cancelImage'  : 'JS/uploadify-cancel.png', 
     'multi'   : true, 
     'auto'   : true, 
     'fileTypeExts'  : '*.jpg', 
     'fileTypeDesc'  : 'Image Files (.JPG)', 
     'queueID'  : 'custom-queue', 
     'queueSizeLimit' : 3, 
     'simUploadLimit' : 3, 
     'sizeLimit' : 10240000, 
     'removeCompleted': false, 
     'onDialogClose' : function(queue) { 
      $('#status-message').text(queue.filesQueued + ' files have been added to the queue.'); 
     }, 
     'onQueueComplete' : function(stats) { 
      $('#status-message').text(stats.successful_uploads + ' files uploaded, ' + stats.upload_errors + ' errors.'); 
     } 
    });    
}); 
</script> 

swf改爲uploaderuploader改爲script

+0

謝謝你的回答!我正在嘗試使用它,但我對演示和文檔中使用的版本感到困惑:S同時嘗試傳遞scriptData參數......您是否有一個工作示例?或者我可以發佈我的代碼... – Michele 2012-03-21 11:44:08

+0

看到我上面編輯過的帖子。 – Nick 2012-03-21 11:47:28

+0

如果我按照你的建議更改按鈕將不起作用...你可以在這裏看到我的測試頁面:[link](http://wpr.it/ADMIN/back_saver.php) – Michele 2012-03-21 11:52:46