5

イメージボード スクリプトである Kusaba X に、離れた場所からファイルをアップロードする方法を追加しようとしています。

このクラスは と で多くのチェックを$_FILES['imagefile']['name']行い$_FILES['imagefile']['size']、それらをリモート URI からのファイル アップロードに再利用したいと考えています。upload.class.phpアップロードしたい写真のURIを含む変数があります。私はそれをすべて書き直して、長い束のif/elseを作成したり、実際にそのコードをコピーしたりしたくありません.それらをそのまま使用する方法があるかどうかを考えていましたか?

しようとしました ($imgURI は http:// ファイルの場所です):

$_FILES['imagefile']['name'] = $imgURI;

$imagefile_name = fopen($imgURI,"rb");
$_FILES['imagefile']['name'] = $imagefile_name;

しかし運がない。

すべてのチェックが実行されるマスター変数を作成し、大規模な検索と置換を行うことはできますが、それには何を含める必要がありますか?

質問が十分に明確であることを願っています。PHPを行ってからしばらく経っているので、明らかなものが欠けている可能性があります。これに関するアイデア/考えをありがとう

4

3 に答える 3

2

$_FILES['imagefile']['name']クライアント PC 上のファイルの名前が含まれています。これは通常、ローカル システム上の永続ファイルに名前を付ける際のヒントとして使用されます。$_FILES読み取り可能なファイルの名前を含むの要素は です$_FILES['imagefile']['tmp_name']

ただし、これは通常、ローカル ファイル名であると想定されます。通常、 のようなコードで使用されますmove_uploaded_file($_FILES['imagefile']['tmp_name'], $permanent_file)。これは基本的に一時ファイルの名前を変更するだけであり、URL では機能しません。

于 2013-07-19T21:33:15.810 に答える
0

$_FILES 配列がリモート ファイルのダウンロードをサポートする可能性は低いです。curl を使用してファイルを一時的な場所にダウンロードし、それを $_FILES 配列で指定してみてください。

PHPでリモートファイルをサーバーにダウンロード

于 2013-07-19T21:29:46.877 に答える
0

あなたのコード

$imagefile_name = fopen($imgURI,"rb");
$_FILES['imagefile']['name'] = $imagefile_name;

リモート URI を開きますが、リソースをファイル名として設定します。

はファイル名であるため、これは失敗します。

リモート ファイルの内容を一時ファイルに保存し、その名前を$_FILES['imagefile']['name'].

とはいえ、このアプローチには臭いがあります。PHP の新しいバージョンごとに$_FILES['imagefile'] の設定が機能するとは思いません。

于 2013-07-19T21:58:20.613 に答える