2011-11-16 25 views
2
<form action="http://s0.filesonic.com/abc" method="post" enctype="multipart/form-data"> 
    <input type="file" name="files[]" /> 
    <button type="submit">submit</button> 
</form> 

上面的代碼上傳文件到文件服務器的聲音,但我想這樣做編程方式使用使用C#上傳文件,基本上我的要求是程序創建表格,文件控制併發送文件到動作屬性中提到的F​​ilesonic服務器URL。使用ASP.NET

我已經經歷了許多鏈接但沒有成功,我已經通過以下鏈接沒有成功。

與HttpWebRequest的上傳文件(的multipart/form-data的)

+0

這並不完全清楚......您是否需要一個將連接到服務器並上傳文件的C#應用​​程序?或者,您是否需要自己的網頁自動上傳文件而無需用戶交互? – David

+0

我需要我的網頁上傳文件,而無需用戶交互使用c# –

+0

@david你能幫我一些代碼的東西嗎? –

回答

2

將下面的代碼文件,只要服務器可以接受外界把它上傳到服務器文件[]數組。

WebRequest webRequest = WebRequest.Create("http://s0.filesonic.com/abc"); 
FileStream reader = new FileStream("file_to_upload", FileMode.Open); 

byte[] data = new byte[reader.Length]; 
webRequest.Method = "POST"; 
webRequest.ContentType = "multipart/form-data"; 
webRequest.ContentLength = reader.Length; 
webRequest.AllowWriteStreamBuffering = "true"; 

reader.Read(data, 0, reader.Length); 

using (var request = webRequest.GetRequestStream()) 
{ 
    request.Write(data, 0, data.Length); 
    using (var response = webRequest.GetResponse()) 
    { 
     //Do something with response if needed 
    } 
+0

@皮特服務器將不接受文件除非它在文件[]標籤中,表示問題 –

0

我這種情況下你的表單上的行動將指向你自己的網頁你的asp.net服務器上。您將使用http將文件發回您的asp.net服務器,然後將其保存在內存中或將其寫入臨時目錄,然後您可以使用HttpWebRequest將文件發送到文件服務器。

你的情況,你也可以做形成後直接使用HttpWebRequest的,快速的樣品,我能找到是here

+0

你能解釋如何httpclient可以發送文件到文件服務器使用C#代碼 –

+0

我更新了答案的鏈接.. –

+0

我試過你的解決方案,但它不工作我得到的服務器的響應,但文件沒有上傳到服務器 –

0

您可以上傳文件使用FTP憑據 這裏你的服務器,路徑意味着你的本地文件路徑或源文件&是的DestinationPath,你必須上傳文件防爆服務器的路徑。 'www ..... com/upload/xxx.txt'

FtpWebRequest reqObj = (FtpWebRequest) WebRequest.Create(DestinationPath);         
reqObj.Method = WebRequestMethods.Ftp.UploadFile;       
reqObj.Credentials = new NetworkCredential(FTP_USERNAME, FTP_PASSWORD); 

byte[] fileContents = File.ReadAllBytes(path); 
reqObj.ContentLength = fileContents.Length; 

Stream requestStream = reqObj.GetRequestStream(); 
requestStream.Write(fileContents, 0, fileContents.Length); 
requestStream.Close(); 
FtpWebResponse response = (FtpWebResponse)reqObj.GetResponse(); 
response.Close();