2013-01-11 27 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

hereを少し良く説明しています$_FILES['file']['tmp_name']

ftp_put()を呼び出す必要がありますサーバー:

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 

を参照してください$ _FILESの詳細については、0を参照してください。

+0

ありがとう!今それは動作します! :) – Raffinatore

1

アップロード先のフォルダに正しい権限がありますか? 777にそれをchmodingし、それが動作するかどうかを確認してください。

+0

ありがとうございますが、動作しません。他にもアイデアはありますか? – Raffinatore

+2

ちょっとした提案:絶対に "chmoding to 777"を免責事項なしで提案してください。 "テストのためにこれを行うだけです。問題が見つかったら安全な権限に戻してください"。 – mmalmeida

+0

@ mmalmeida私はそれについて疑問に思います。とにかくパスワードで保護されたFTP接続の背後にあるサーバー上のアクセス許可ではありませんか?たとえ私が自分のftpホストに777のフォルダを持っていても、インターネットから書き込むことはできません。サーバにログインする必要があります。 –

1

ファイルは一時的な名前のサーバに保存されていますので、$_FILES['file']['name']をアップロードしようとすると、そのような名前のファイルが存在しないため失敗します。あなたが上に存在するPHPで保存された一時的なコピーのファイル名を必要とするので

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

:代わりにあなたが<input name="uploadedfile" type="file" />を持っているので、それは

+0

ありがとう!今それは動作します! :) – Raffinatore

関連する問題