2014-10-09 2 views
0

자체 호스팅 ServiceStack (버전 4.0.31 모노)을 사용하여 내 S3 호환 서버를 만들려고하고 있으며 s3curl.pl 형식 업로드를 지원해야합니다. 문제는 멀티 파트 업로드를 사용하지 않지만 기본 HTTP 바이너리 형식을 사용하는 것입니다. 이미 multipart/form-data 업로드를 위해 ServiceStack을 사용하고 있습니다. 나는 또한 관련 주제에 적용 가능한 모든 게시물을 살펴 보았고 그 중 누구도 나를 위해 일하지 않습니다. 예 : ServiceStack - Upload files with stream and with Uri는 내 문제를 해결할 것으로 보입니다. 문제는 해당 솔루션에 대한 RequestContext.Files를 해결할 수 없다는 것입니다.ServiceStack - 파일을 바이트 스트림으로 업로드 하시겠습니까?

curl -H 'Date: Thu, 09 Oct 2014 16:56:21 +0000' -H 'Authorization: AWS Y29tZXQ=:ciitxdxRvWrlcVsc48JnXqKu/oY=' -L -H 'content-type: ' -T README.txt 'http://localhost:1301/s3/README.txt?format=xml' -k 

답변

1

base.Request.Files API는 HTTP multipart/form-data 파일 업로드 처리를위한 것입니다

은 여기 내 컬 명령 줄 (보안 위험이되지 않도록 인증은 가짜이다)이다.

는 직렬화를 생략하고 대신 DTO에 원시의 InputStream를 주입 ServiceStack을 알려줍니다 IRequiresRequestStream으로 요청 DTO를 장식 할 수있는 다른 파일 업로드를 처리하려면 다음을 처리 할 수 ​​서비스에

public class RawFileUpload : IRequiresRequestStream 
{ 
    public Stream RequestStream { get; set; } 
} 

public class UploadServices : Service 
{ 
    public object Any(RawFileUpload request) 
    { 
     var filePath = "~/uploads/{0}".Fmt(Guid.NewGuid().ToString("n")) 
         .MapAbsolutePath(); 
     using (var fs = File.OpenWrite(filePath)) 
     { 
      request.RequestStream.WriteTo(fs); 
     } 
     //... 
    } 
} 

이 기능은 Serialization/Deserialization wiki에 설명되어 있습니다.

+0

감사합니다. 작동합니다! 스트림과 경로를 결합 할 수 있습니까? 아니면 상호 배타적입니까? DTO에 다른 vars를 유지하려고 시도했지만 null 값이 나타났습니다 .S3 URI 형식은 /mybucket/photos/2014/08/puppy.jpg?x-foo=bar이고 필드를 꺼내야 할 것입니다. Request.RawUrl 자신이 DTO를 통해 동시에 업로드 및 경로 추출을 수행 할 수 없다면? - BTW, 저는 ServiceStack을 좋아합니다. 그리고 지금 당장 주요 제품을 설계하고 있습니다. – tradetree

+0

@tradetree는 이전 버전이 아니므로'base.Request'에서 값을 가져와야하지만이 커밋에서 지원을 추가했습니다 (https://github.com/ServiceStack/ServiceStack/commit/). bc3492b20a6ace58dd88539fe5114e647f5f830e). 이 변경 사항은 [MyGet에서 사용 가능합니다.] (https://github.com/ServiceStack/ServiceStack/wiki/MyGet)입니다. – mythz

+0

알았어. 잘 됐네. 개발의 안정성을 위해 성숙한 버전을 고수하고 싶지만, 미래에 대한 소식을 듣고 기쁘게 생각합니다. – tradetree

관련 문제