0

これはクライアント コード (C#) です。

string boundary = "--ABC";

try
{
    WebRequest request = WebRequest.Create(url);
    request.Method = "POST";                
    request.ContentType = "multipart/form-data;boundary="+boundary;


    using (var requestStream = request.GetRequestStream())
    using (var writer = new StreamWriter(requestStream))
    {
        writer.WriteLine(boundary);
        writer.WriteLine("Content-Disposition: form-data; name=\"data\"");
        writer.WriteLine();
        writer.WriteLine("abcdefg");
        writer.WriteLine(boundary + "--");
        writer.Flush();
    }
    string responseData = string.Empty;
    using (var response = request.GetResponse())
    using (var responseStream = response.GetResponseStream())
    using (var reader = new StreamReader(responseStream))
    {
        responseData=reader.ReadToEnd();
    }

これはサーバーコード(php)です:

print file_get_contents("php://input");

また:

print $_POST["data"];

また:

print $http_raw_post_data;

また:

$fp=fopen("php://output","rb");
$contents=fread($fp,5);
fclose($fp);
print $contents;

これらのコードは機能せず、すべて空で出力されます。
誰でも助けてもらえますか?

4

2 に答える 2

0

これを試して:

 string boundary = "AaB03x";

    try
    {
        WebRequest request = WebRequest.Create(url);
        request.Method = "POST";                
        request.ContentType = "multipart/form-data;boundary="+boundary;

        using (var requestStream = request.GetRequestStream())
        using (var writer = new StreamWriter(requestStream))
        {
            writer.WriteLine("--"+boundary);
            writer.WriteLine( "Content-Disposition: form-data; name=\"files\"; filename=\"file1.txt\"");
             writer.WriteLine("Content-Type: text/plain
    ");
            writer.WriteLine("example");        
            writer.WriteLine("--"boundary + "--");
            writer.Flush();
        }
        string responseData = string.Empty;
        using (var response = request.GetResponse())
        using (var responseStream = response.GetResponseStream())
        using (var reader = new StreamReader(responseStream))
        {
            responseData=reader.ReadToEnd();
        }
于 2013-01-27T20:48:45.630 に答える
0

次の例は、"multipart/form-data" エンコーディングを示しています。次のフォームがあるとします。

 <FORM action="http://server.com/cgi/handle"
       enctype="multipart/form-data"
       method="post">
   <P>
   What is your name? <INPUT type="text" name="submit-name"><BR>
   What files are you sending? <INPUT type="file" name="files"><BR>
   <INPUT type="submit" value="Send"> <INPUT type="reset">
 </FORM>

ユーザーがテキスト入力に「Larry」と入力し、テキスト ファイル「file1.txt」を選択した場合、ユーザー エージェントは次のデータを返す可能性があります。

Content-Type: multipart/form-data; boundary=AaB03x

   --AaB03x
   Content-Disposition: form-data; name="submit-name"

   Larry
   --AaB03x
   Content-Disposition: form-data; name="files"; filename="file1.txt"
   Content-Type: text/plain

   ... contents of file1.txt ...
   --AaB03x--

ユーザーが 2 番目の (画像) ファイル "file2.gif" を選択した場合、ユーザー エージェントは次のようにパーツを構成する可能性があります。

   Content-Type: multipart/form-data; boundary=AaB03x

   --AaB03x
   Content-Disposition: form-data; name="submit-name"

   Larry
   --AaB03x
   Content-Disposition: form-data; name="files"
   Content-Type: multipart/mixed; boundary=BbC04y

   --BbC04y
   Content-Disposition: file; filename="file1.txt"
   Content-Type: text/plain

   ... contents of file1.txt ...
   --BbC04y
   Content-Disposition: file; filename="file2.gif"
   Content-Type: image/gif
   Content-Transfer-Encoding: binary

   ...contents of file2.gif...
   --BbC04y--
   --AaB03x--

C# の例でのマルチパート フォーム ポスト

于 2013-01-27T20:34:09.980 に答える