2

これは私がprocess.phpに持っているものです

parse_str(file_get_contents("php://input"),$upload_data);
if (isset($upload_data)) {
   print_r($upload_data);
   exit;
}

これは、curlを使用してサーバーにクエリを実行する方法です。

weldan@prindu:~$ curl -X PUT -H "X-TOKEN: test123" -F filedata=@/home/weldan/Pictures/Cool-Pictures1.jpg  http://host.tld/process.php
Array
(
    [------------------------------22031b6e799c
Content-Disposition:_form-data;_name] => "filedata"; filename="Cool-Pictures1.jpg"
Content-Type: image/jpeg

���
)

そこにアップロードされたファイルがあることをどうやって知るのか。

現在の問題は、このファイルを$ _FILES変数のように処理するにはどうすればよいですか?

これを達成するための他の方法も開いてください。

ありがとう

4

2 に答える 2

0

PUTリクエストで入力される$_FILES配列。これは、PUTリクエストがURLにファイル名を指定し、本文にファイルの内容を指定するためです。これ以上何もない。

php://inputすでに提案したように使用する必要があります。

upload.php

<?php
/* PUT data goes to php://input */
echo file_get_contents("php://input");

次に、次のcurlコマンドラインを使用します。

curl --upload -H "X-TOKEN: test123" a.txt  http://localhost/upload.php

コメント後に更新:--uploadオプションを使用すると、ニーズに合うはずです。-X PUTと-Fの違いは、データは生で送信され、マルチパート/フォームデータでエンコードされないことです。カールの隠された宝物の1つ;)

于 2013-02-27T08:07:17.873 に答える
0

短い答え

あなたの状況での唯一の方法は、生のリクエストを手動で解析することです(この要点を見てください)

考え

  • PUTリクエストは、1つのファイルのみをアップロードするために使用できます(HTMLアップロードフォームからではなく、カスタムリクエストを使用)。サーバーでは、生のファイルコンテンツを取得し、それをいくつかのファイルに書き込みます。
  • ファイルなしでPUTを使用し(application / x-www-form-urlencoded)、を使用して生のリクエストを解析しますparse_str(file_get_contents("php://input"), $_PUT);
  • POSTを使用してファイル(multipart / form-data)をアップロードします。
于 2020-10-23T06:37:29.230 に答える