簡體   English   中英

從表單上傳PHP ftp文件

[英]PHP ftp file upload from form

$host = 'XXXXXXXXXXX'
$usr = 'XXXXXXXXXXX';
$pwd = 'XXXXXXXXXXX';
$destDir = $_POST['filetype'];
$conn_id=ftp_connect($host);
$success = ftp_login($conn_id,$usr,$pwd);
$rightName = basename($_FILES['uploadfile']['name']);
ftp_pasv($conn_id, true);
if($success)
{ 
    ftp_put($conn_id,$destDir.'/'.$rightName,$_FILES['uploadfile']['tmp_name'],FTP_BINARY) or die('Cannot ftp');
    ftp_close($conn_id);
    echo ' Upload Successful';
} 

表格在這里

<form enctype="multipart/form-data" action="upload.php" method="POST">
    <input name="filetype" id="filetype1" /><br />
    <input name="uploadfile" type="file" /><br />
<input type="submit" value="Upload File" />

我嘗試了多種選擇。 從php的tmp上傳位置將'ftp_put'到工作目錄,然后再到目標目錄,然后將'ftp_put'直接從PHP的臨時上傳目錄復制到所需目錄,但是由於某種原因,FTP似乎根本不起作用。 它只是死了。 使用'move_uploaded_files()'進行的正常上傳效果完美。 在某些論壇中,提到要使ftp正常工作,我不能具有“文件”輸入類型,而只能具有純文本框。 我不明白為什么要這樣,即使事實如此。 為什么上面的代碼不起作用? 我已經檢查了目標文件夾上的權限,這應該不是問題。

更新資料

抱歉,麻煩歸結於文檔問題。 文檔中提到的F​​TP根目錄不正確,並且代碼中使用的FTP根目錄與記錄的FTP根目錄不同,因此造成了麻煩。

在PHP中移動文件是一件棘手的事情,因為有很多事情在一起玩。

  1. 目標目錄必須是服務器進程可寫的。
  2. PHP具有安全功能。 其中之一稱為safe_mode。 安全模式(除其他外)檢查文件的UID和GID(用戶ID和組ID),並限制例如允許哪些文件包含在內。 避免在腳本UID / GID所不擁有的目錄中創建它們。 通常,與您上傳的用戶不是運行Web服務器的用戶。因此,例如,在創建目錄時,將使用Web服務器的UID / GID創建目錄,並且無法通過具有不同版本的PHP腳本在其中創建文件UID / GID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM