0

file_get_contents();相対ファイルパスを使用する場合、これを使用してサーバーに画像ファイルをアップロードするスクリプトを作成しました。/var/test/image1.jpgまた、リモートURLを使用する場合も同様です。http://domain.com/test/image1.jpg.

ただし、ローカルパスでは機能しません。file://C:/Users/me/Pictures/image1.jpg. 「file_get_contents(file://C:/Users/me/Pictures/image1.jpg)[function.file-get-contents]: failed to open stream: No such file or directory」または「remote host file access not supported」というメッセージが表示されます。

リモートクライアントがAPIを介してローカル画像をサーバーにアップロードできるように、ローカルパスで機能するためにこれが本当に必要です。したがって、フォームを使用できず、ここで指定されている PUT メソッドを使用する必要があります ([http://www.php.net/manual/en/features.file-upload.put-method.php][1])。ファイルにアクセスしますか?

私の API のコードは以下のとおりですが、クライアントのローカル マシンからファイルの内容を取得する方法を見つけようとしています。

if($_SERVER['REQUEST_METHOD'] == 'PUT') {
    $input = file_get_contents("php://input"); //filepath passed from client in XML

//Convert the XML to an object we can deal with
$xml = simplexml_load_string($input);   

$file_path = $xml->image->filepath; 

if  (file_exists($file_path) ){

    $file_data = file_get_contents($file_path);

    //Initialise the Curl Instance
    $ch = curl_init();

    //Set our Curl Options
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $file_data);

    //Execute the request
    $response = curl_exec($ch);

    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    //Close the Handle
    curl_close($ch);
}
4

2 に答える 2

4

指定しないでくださいfile:// To access local paths you can directly do

file_get_contents('C:/Users/me/Pictures/image1.jpg');

../以下のようなベースナビゲーションを使用して、現在のディレクトリを基準にしてナビゲートすることもできます

file_get_contents('../../../somefile.xyz');

EDIT:クライアント側のファイル、つまりそのようにリモートパスにアクセスしようとしている場合、それは機能しません。ファイルを転送するには、HTTP、FTP などが必要です。ローカル ファイル システム アドレスを指定するだけでは十分ではありません。

エンドポイントは何らかの方法でファイルを利用できるようにする必要があります (HTTP/FTP サーバー)。または、クライアントにブラウザーとフィールドを介してファイルをアップロードさせる必要があります。<input>

于 2012-11-15T12:00:05.263 に答える
1

リモートクライアントのコンピューターからファイルを開くために使用できる方法はありませんfile_get_contents()。ただし、ローカルで実行し (そのために PHP をセットアップする必要もあります)、何らかの方法でサーバーに送信する必要があります。

file_get_contents()異なるマシンではなく、スクリプトと同じマシンにあるファイルを開くことができます

ファイル アップローダの簡単な例については、http://www.tizag.com/phpT/fileupload.phpをご覧ください。

于 2012-11-15T12:10:10.007 に答える