2009-11-09 2 views
2

클라이언트가 파일 서버에 파일을 업로드 할 수있는 REST 웹 서비스를 작성하려고합니다. 어떤 지침을 언급 할 수있는 유용한 링크 나 예제가 있습니까?ADO.NET 데이터 서비스 - 파일 업로드

사용 가능한 ADO.NET 데이터 서비스를 사용하는 POST 작업에 대한 많은 예제를 보지 못했습니다.

답변

1

나는 이것을 파일 서버 자체에 직접 전달하는 방법을 100 % 확신하지는 않지만, ADO.Net Data Services는 확실히 데이터베이스와 비슷한 것을 지원합니다. 아래 코드는 파일을 데이터베이스에 저장하는 것과 유사한 목표를 달성하는 방법입니다. 도움이됩니다 얼마나 확실하지만,

var myDocumentRepositoryUri = new Uri("uri here"); 
var dataContext = new FileRepositoryEntities(myDocumentRepositoryUri); 
var myFile = new FileItem(); 
myfile.Filename = "upload.dat"; 
myFile.Data = new byte[1000]; // or put whatever file data you want to here 
dataContext.AddToFileItem(myFile); 
dataContext.SaveChanges(); 

참고하지 않음 :이 코드는 또한 FileItem (객체로 데이터베이스 테이블의 표현)을 작성하고 데이터를 저장하는 엔티티 프레임 워크를 사용하고 있습니다.

2

권장 접근 방법인지는 모르겠지만 POST를 사용하여 ADO.NET dataservices에 파일을 업로드했습니다. 나는 그것에 대해 갔다하는 방법은 다음과 같습니다 난을 UploadFile이라는 서비스 동작을 구현했습니다 DataService에에

합니다 (WebInvoke의 속성을 사용하여이 POST 호출의 요구를 충족시켜 있도록) :

[WebInvoke] 
public void UploadFile() 
{ 
    var request = HttpContext.Current.Request; 

    for (int i = 0; i < request.Files.Count; i++) 
    { 
     var file = request.Files[i]; 
     var inputValues = new byte[file.ContentLength]; 

     using (var requestStream = file.InputStream) 
     { 
      requestStream.Read(inputValues, 0, file.ContentLength); 
     } 

     File.WriteAllBytes(@"c:\temp\" + file.FileName, inputValues); 
    } 
} 

을 그리고 클라이언트 측에서 이것은 HttpRequest.Files 컬렉션의 파일 데이터를 배치하고 콘텐츠 유형을 설정하여 파일을 업로드 할 웹 클라이언트를 사용

var urlString = "http://localhost/TestDataServicePost/CustomDataService.svc/UploadFile"; 
var webClient = new WebClient(); 
webClient.UploadFile(urlString, "POST", @"C:\temp\test.txt"); 

: 나는 사용하여 데이터 서비스를 호출합니다. 웹 클라이언트가 파일 경로를 사용하여 파일을 읽는 대신 파일 내용을 자신이 직접 보내려면 (예 : Asp FileUpload 컨트롤에서) this 게시물에서와 비슷한 방법으로 WebRequest를 사용할 수 있습니다. 대신

FileStream fileStream = new FileStream(uploadfile, 
           FileMode.Open, FileAccess.Read); 

를 사용하는 당신이 전달 바이트 배열을 사용할 수 있지만.

을 난이 도움이되기를 바랍니다.