8

私は最初のRESTApiを構築していますが、これまでのところ順調に進んでいますPUT。リクエストメソッドを介したファイルのアップロードに問題があります。iOSアプリからユーザーとそのアバター画像を更新しているためである必要がありますPUT。PUTは特に更新要求用です。

したがってPUT、ファイルをアップロードすると、$_FILES配列は実際には空になりますが、PUTデータを印刷すると

parse_str(file_get_contents('php://input'), $put_vars);  
$data = $put_vars; 
print_r($data);

次の応答があります。

Array
(
    [------WebKitFormBoundarykwXBOhO69MmTfs61
Content-Disposition:_form-data;_name] => \"avatar\"; filename=\"avatar-filename.png\"
Content-Type: image/png

�PNG


)

PUT配列などのようにアクセスできないため、このデータはよくわかりません。PUTだから私の質問は、データからアップロードされたファイルにアクセスするにはどうすればよいですか?

ご協力いただきありがとうございます。

4

2 に答える 2

5

PHP は、一部のクライアントがファイルをサーバーに格納するために使用する HTTP PUT メソッドをサポートしています。PUT リクエストは、POST リクエストを使用したファイルのアップロードよりもはるかに単純で、次のようになります。

PUT /path/filename.html HTTP/1.1

次のコードは、PUT を介してファイルをアップロードするための公式の PHP ドキュメントにあります。

<?php
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://input", "r");

/* Open a file for writing */
$fp = fopen("myputfile.ext", "w");

/* Read the data 1 KB at a time
   and write to the file */
while ($data = fread($putdata, 1024))
  fwrite($fp, $data);

/* Close the streams */
fclose($fp);
fclose($putdata);
?>
于 2012-09-09T16:26:50.403 に答える
0

PHP マニュアルのFile Upload: PUT Methodにこの例があります。

<?php
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://input", "r");

/* Open a file for writing */
$fp = fopen("myputfile.ext", "w");

/* Read the data 1 KB at a time
   and write to the file */
while ($data = fread($putdata, 1024))
  fwrite($fp, $data);

/* Close the streams */
fclose($fp);
fclose($putdata);
?>
于 2012-09-09T16:27:30.637 に答える