-1

「通常の Web ブラウザ」を介して、バイナリまたはテキストであっても、PUT メソッドを介してファイルをアップロードできます。多くの人が、それは不可能だと言っているのはなぜですか?

jQuery と PHP を使用したサンプル コード。

$(document).ready(function() {
    $("#uploadbutton").click(function() {
        var filename = $("#file").val();
        $.ajax({ 
        type: "PUT",
        url: "addFile.do",
           enctype: 'multipart/form-data',
           data: {file: filename},
          success: function(){
               alert( "Data Uploaded: ");
            }
        });     
    });
});

サーバー側では、STDINストリームを次のように読み取るだけです

<?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);
?>
4

2 に答える 2

0

特にソリューションの場合、主にPUTメソッド(動詞)がすべてのブラウザー、特に古いブラウザーでサポートされているわけではないため、このソリューションはすべてのブラウザーで機能するとは限りません。

トピックは以前にも出てきましたが、まったく同じではありませんが、いくつかの回答はどこPUTDELETE機能しないかの例です。

のドキュメントに$.ajax()もこれが記載されています

type
Default:'GET'
作成するリクエストのタイプ("POST"または"GET")、デフォルトは"GET"です。

注:ここでは、PUTやDELETEなどの他のHTTPリクエストメソッドも使用できますが、すべてのブラウザーでサポートされているわけではありません。

于 2010-10-03T11:30:48.450 に答える
0
{file: filename}

ファイルをアップロードするときは、ファイルをアップロードする必要があります。ローカルファイル名が何であるかをサーバーに伝えるだけでは不十分です。

標準のセキュリティコンテキストでWebブラウザで実行されているJavaScriptには、ユーザーのハードディスクからファイル内のデータを読み取るためのアクセス権がありません。

データを取得できないため、アップロードできません。

于 2010-10-03T11:35:50.760 に答える