2013-01-11 45 views
7

Tôi muốn tải lên tệp qua tải lên FTP trong biểu mẫu.Tải lên FTP qua biểu mẫu PHP

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

Dưới đây là file 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"; 

?> 

Kết nối FTP kết nối thành công nhưng các tập tin là hư không.

Ai đó có thể giúp tôi không?

Cảm ơn!

+0

Cơ sở dữ liệu nào? kiểm tra quyền truy cập thư mục, chúng phải được đặt thành 777 – vodich

+0

Ups, sorry. Tôi muốn viết kết nối ftp. Nhưng nó không hoạt động. – Raffinatore

+0

nếu u có hình thức lớn hơn, bạn cần nhập lại?

? –

Trả lời

6

Bởi vì bạn có <input name="uploadedfile" type="file" />:

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

Bởi vì bạn cần tên tập tin của các bản sao tạm thời được lưu trữ bằng PHP, mà tồn tại trên máy chủ:

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 

Tham khảo PHP documentation để biết thêm thông tin về $ _FILES.

+0

Cảm ơn! Bây giờ nó hoạt động !! :) – Raffinatore

1

Bạn có chắc chắn rằng thư mục bạn đang tải lên có quyền chính xác không? Hãy thử chmoding nó đến 777 và xem nếu nó hoạt động.

+0

Cảm ơn, vâng, nhưng nó không hoạt động. Bạn có ý tưởng nào khác không? – Raffinatore

+2

Chỉ là một gợi ý: Không bao giờ đề nghị "thử chmoding to 777" mà không có tuyên bố từ chối "làm điều này chỉ để thử nghiệm. Hoàn nguyên nó trở lại quyền an toàn hơn khi bạn tìm thấy vấn đề là gì". – mmalmeida

+0

@mmalmeida Tôi tự hỏi về điều đó. không phải là quyền trên máy chủ đằng sau một kết nối ftp mật khẩu nào? ngay cả khi tôi có một thư mục 777 trên máy chủ FTP của tôi, nó không thể được viết từ internet, bạn phải đăng nhập vào máy chủ. –

1

Tệp được lưu trữ trên máy chủ có tên tạm thời, vì vậy khi bạn thử tải lên $_FILES['file']['name'], nó không thành công, vì tệp có tên như vậy không tồn tại. Thay vào đó bạn nên gọi ftp_put() với $_FILES['file']['tmp_name']

Nó giải thích tốt hơn một chút here

+0

Cảm ơn! Bây giờ nó hoạt động! :) – Raffinatore

Các vấn đề liên quan