0

私は Powershell を初めて使用し、HTTP POST 要求を介してファイルを送信する際に問題があります。ファイルの送信/アップロードを除いて、すべてが完全に機能しています。これは既存のコードを使用して可能ですか?

これが私のコードです:



    # VARIABLES
    $myFile = "c:\sample_file.csv"
    $updateUrl = "http://www.example.com/processor"
    $postData  =  "field1=value1"
    $postData += "&field2=value2"
    $postData += "&myFile=" + $myFile

    # EXECUTE FUNCTION
    updateServer -url $updateUrl -data $postData



    function updateServer {
        param(
            [string]$url = $null,
            [string]$data = $null,
            [System.Net.NetworkCredential]$credentials = $null,
            [string]$contentType = "application/x-www-form-urlencoded",
            [string]$codePageName = "UTF-8",
            [string]$userAgent = $null
        );

        if ( $url -and $data ){
            [System.Net.WebRequest]$webRequest = [System.Net.WebRequest]::Create($url);
            $webRequest.ServicePoint.Expect100Continue = $false;
            if ( $credentials ){
                $webRequest.Credentials = $credentials;
                $webRequest.PreAuthenticate = $true;
            }
            $webRequest.ContentType = $contentType;
            $webRequest.Method = "POST";
            if ( $userAgent ){
                $webRequest.UserAgent = $userAgent;
            }

            $enc = [System.Text.Encoding]::GetEncoding($codePageName);
            [byte[]]$bytes = $enc.GetBytes($data);
            $webRequest.ContentLength = $bytes.Length;
            [System.IO.Stream]$reqStream = $webRequest.GetRequestStream();
            $reqStream.Write($bytes, 0, $bytes.Length);
            $reqStream.Flush();

            $resp = $webRequest.GetResponse();
            $rs = $resp.GetResponseStream();
            [System.IO.StreamReader]$sr = New-Object System.IO.StreamReader -argumentList $rs;
            $sr.ReadToEnd();
        }
    }

4

2 に答える 2

2

二つの思い。まず、ファイル名をアップロードしているようですが、ファイルの内容はアップロードしていないようです。次に、POST 内でファイルのコンテンツをアップロードする場合は、[System.Web.HttpUtility]::UrlEncode(). また、この関連する SO の質問 に対する私の回答もご覧ください。

于 2013-02-14T02:30:56.220 に答える
0

この問題の解決策はこちらで見つかりました。スクリプトを最初に作成したとき、または別の場所でスクリプトのスニペットを作成したときに、これに遭遇した可能性があると思います。

于 2013-02-14T16:52:30.883 に答える