2011-11-16 2 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#을 사용하여이 작업을 수행하려고합니다. 기본적으로 프로그램에서 양식과 파일 컨트롤을 만들고ASP.NET을 사용하여 파일 업로드

많은 링크를 통과했지만 성공하지 못했지만 다음 링크를 통해 아무런 성공도 거두지 못했습니다. HttpWebRequest를 가진

파일 업로드 (다중/폼 데이터)

+0

이것은 완전히 명확하지 않습니다 ... 서버에 연결하고 파일을 업로드 할 C# 응용 프로그램이 필요합니까? 또는 사용자 상호 작용없이 자동으로 파일을 업로드하려면 웹 페이지가 필요합니까? – David

+0

C# –

+0

@david를 사용하여 사용자 개입없이 파일을 업로드하려면 웹 페이지가 필요합니다. –

답변

2

은 다음 코드는 한 서버가 외부를 수용 할 수있는 서버에 파일을 업로드 할 것입니다 files [] 배열의.

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

@peter 서버는 파일을 허용하지 않습니다. 그것이 파일 []에 없다면, 문제는 –

0

I 양식의 액션이 asp.net 서버에 자신의 페이지로 할 경우. http를 사용하여 asp.net 서버에 파일을 게시하려면 메모리에 저장하거나 임시 디렉토리에 파일을 저장 한 다음 HttpWebRequest를 사용하여 파일 서버에 파일을 보낼 수 있습니다. 당신은 또한 게시물을 형성 할 수있는 경우

직접 HttpWebRequest를 사용하여, 내가 찾을 수있는 빠른 샘플 here

+0

httpclient가 C# 코드 –

+0

을 사용하여 filesonic 서버로 파일을 보낼 수있는 방법을 설명 할 수 있습니까? –

+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(); 
관련 문제