4

ローカル PC からリモート サーバーに画像ファイルをアップロードしようとしています。画像は単純な html 入力 (type=file) から取得され、ファイル配列には次が含まれます。

Array ( [name] => image42.jpg [type] => image/jpeg [tmp_name] => C:\wamp\tmp\phpBB52.tmp [error] => 0 [size] => 6051 ) 

ご覧のとおり、私のローカル PC は Windows を使用しています。画像ファイルをアップロードしようとするコードは次のとおりです。

$conn_id = ftp_connect($ftp_server, $ftp_port);

$login_result = ftp_login($conn_id, $ftp_username, $ftp_password);

if(!ftp_chdir($conn_id, $folder_path))
{
    $create_folder = ftp_mkdir($conn_id, $folder_path);
    ftp_chmod($conn_id, 0777, $folder_path);
}

これはサーバーに完全に接続し、フォルダーが存在しない場合でもフォルダーを作成します。次に、アップロード部分に到達すると、

ftp_pasv($conn_id, true);

// upload a file
$upload = ftp_put($conn_id, $new_dir, $file_dir, FTP_BINARY);

変数$uploadは を取得しfalseます。

$file_dirを含むC:\wamp\tmp\phpBB52.tmp(つまり、ファイルのtmp_name)。

$new_dirイメージ パスを含むリモート ディレクトリが含まれます。img.example.com/data/images/blabla.jpg

また、返されるエラーは次のとおりです。

Warning: ftp_put() [<a href='function.ftp-put'>function.ftp-put</a>]: Could not create file. in C:\wamp\www\example\example.php on line 95

GoogleでもStackOverflowでも、役立つものは何も見つかりませんでした。その理由は何ですか?

4

2 に答える 2

3

これは私のために働いた。サーバーのルートディレクトリがFTPルートディレクトリと異なる可能性があります。

別のプログラムでFTPアカウントにログインして、ルートを確認してください。たとえば、私のFTPルートは/public_html/ですが、サーバーは/home/cms/public_html/です。したがって、ファイルのリモート宛先がに/home/cms/public_html/images/82.jpg変更するように設定されている場合/public_html/images/82.jpg

于 2012-12-10T20:58:26.800 に答える
0

私のスクリプトは定期的にファイルを FTP の場所にアップロードしようとしており (以前にアップロードされたファイルを同じ名前で上書きします)、正常に動作していました。

このエラーが表示されるようになりました。FTP の場所からファイルを削除し、スクリプトを使用して再度アップロードしたところ、エラーはなくなりました。

ファイルは、FTP の場所にある他のアプリケーションによって上書きされないようにロックされているか、破損している可能性があります。

于 2015-01-23T15:50:41.090 に答える