2013-01-11 110 views
7

我想通過FTP上傳表單上傳文件。通過PHP上傳FTP表格

<html> 
    <body> 
    <form enctype="multipart/form-data" action="upload_file.php" method="POST"> 
     <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
     Choose a file to upload: <input name="uploadedfile" type="file" /><br /> 
     <input type="submit" value="Upload File" /> 
    </form> 
    </body> 
</html> 

這裏是PHP文件:

<?php 

$ftp_server = "xxx"; 
$ftp_username = "xxx"; 
$ftp_password = "xxx"; 

// setup of connection 
$conn_id = ftp_connect($ftp_server) or die("could not connect to $ftp_server"); 

// login 
if (@ftp_login($conn_id, $ftp_username, $ftp_password)) 
{ 
    echo "conectd as [email protected]$ftp_server\n"; 
} 
else 
{ 
    echo "could not connect as $ftp_username\n"; 
} 

$file = $_FILES["file"]["name"]; 
$remote_file_path = "/home/www/lifestyle69/import/".$file; 
ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII); 
ftp_close($conn_id); 
echo "\n\nconnection closed"; 

?> 

FTP連接連接成功,但該文件是沒有出路的。

任何人都可以幫助我嗎?

謝謝!

+0

什麼數據庫?檢查文件夾權限,他們應該設置爲777 – vodich

+0

Ups,對不起。我想寫ftp連接。但它不起作用。 – Raffinatore

+0

如果你有更大的表單,你需要再次輸入?

? –

回答

6

因爲你有<input name="uploadedfile" type="file" />

$file = $_FILES["file"]["name"]; // wrong 
$file = $_FILES["uploadedfile"]["name"]; // right 

因爲你需要通過PHP存儲臨時副本,它存在於文件的文件名服務器:

ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII); // wrong 
ftp_put($conn_id, $remote_file_path, $_FILES["uploadedfile"]["tmp_name"], 
     FTP_ASCII); // right 

請參閱PHP documentation瞭解更多關於$ _FILES的信息。

+0

謝謝!現在它的作品! :) – Raffinatore

1

您確定要上傳到的文件夾具有正確的權限嗎?嘗試chmoding到777,看看是否有效。

+0

謝謝,是的,但它不起作用。你有其他想法嗎? – Raffinatore

+2

只是一個建議:從不建議「嘗試chmoding到777」沒有免責聲明「這樣做只是爲了測試,一旦你發現問題是恢復到更安全的權限。 – mmalmeida

+0

@mmalmeida我很想知道。無論如何不是在密碼ftp連接後面的服務器上的權限?即使我在我的ftp主機上有一個777文件夾,它也不能從互聯網上寫入,你必須登錄到服務器。 –

1

該文件以臨時名稱存儲在服務器上,因此當您嘗試上傳$_FILES['file']['name']時,它會失敗,因爲具有該名稱的文件不存在。相反,你應該叫ftp_put()$_FILES['file']['tmp_name']

它解釋好一點here

+0

謝謝!現在它工作了! :) – Raffinatore