2011-09-14 7 views
0

ファイルをサーバーにアップロードします。私は(私は、サーバーをWAMP使用しています)ローカルホストサーバーにファイルをアップロードするには、この機能を書いた:Httpwebrequestを使用してファイルをアップロードする

Additional information: The remote server returned an error: (405) Method Not Allowed.

は、私が使用しようとした:私はボタンをクリックしたときに

private void button1_Click_1(object sender, EventArgs e) 
    { 
     FileStream fstream = new FileStream(@"C:\Users\Albert\Documents\10050409_3276.doc", FileMode.OpenOrCreate); 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/upload_file"); 
     request.Method = "PUT"; 
     request.ContentLength = fstream.Length; 
     request.AllowWriteStreamBuffering = true; 
     Stream request_stream = request.GetRequestStream(); 
     byte[] indata = new byte[1024]; 
     int bytes_read = fstream.Read(indata, 0, indata.Length); 
     while (bytes_read > 0) 
     { 
      request_stream.Write(indata, 0, indata.Length); 
      bytes_read = fstream.Read(indata, 0, indata.Length); 
     } 
     fstream.Close(); 
     request_stream.Close(); 
     request.GetResponse(); 
     MessageBox.Show("ok"); 
    } 

だから例外apperは、と言いました"POST"の代わりに "PUT"ので、プログラムが動作し、メッセージボックスが 'ok'と言うように見えますが、localhost-> upload_file(folder)を開いたときにIdidn'tファイルが見つかりません。

私はプログラムをテストしましたが、問題は発生しました。

実際のサーバーでプログラムをテストし、ネットワークの資格情報を入力して、アクセス権が(777)あるフォルダにアップロードしようとしました=>問題が発生しました。

だからどこに問題がありますか?

感謝:)

+0

、右? –

+0

はいそれはC#コードです – Albert

+0

私はあなたがMultipart Mimeタイプを見逃していると思います。また、「PUT」メソッドを使用できるWebサイトを作成していない限り、必ず「POST」を使用する必要があります。 –

答えて

2

は、WebClientの

WebClient client = new WebClient(); 
byte[] bret = client.UploadFile(path, "POST", FilePath); 
//path==URL 
//FilePath==Your uploading file path 

または

WebClient webClient = new WebClient(); 
string webAddress = null; 
try 
{ 
    webAddress = @"http://localhost/upload_file/"; 

    webClient.Credentials = CredentialCache.DefaultCredentials; 

    WebRequest serverRequest = WebRequest.Create(webAddress); 
    serverRequest.Credentials = CredentialCache.DefaultCredentials; 
    WebResponse serverResponse; 
    serverResponse = serverRequest.GetResponse(); 
    serverResponse.Close(); 

    webClient.UploadFile(path, "POST", FilePath); 
    webClient.Dispose(); 
    webClient = null; 
} 
catch (Exception error) 
{ 
    MessageBox.Show(error.Message); 
} 

てみてくださいC#のコードです(私が試していなかったコードまたは一部)

+0

WebClientクライアント=新しいWebClient(); バイト[] bret = client.UploadFile( "http:// localhost/Lecture Fetcher/xml_files"、 "POST"、 "k.xml"); Console.WriteLine( "ok"); – Albert

+0

consolの書き込み(ok)がxml_files(フォルダ)を開くときにファイルが存在しない – Albert

+0

更新されたコードを試してください – deepi

関連する問題