How to handle large file uploads via WCF?

前端 未结 3 1332
暖寄归人
暖寄归人 2020-11-30 04:57

I am looking into using WCF for a project which would require the ability for people to upload large files (64MB-1GB) to my server. How would I handle this with WCF, possibl

相关标签:
3条回答
  • 2020-11-30 05:36

    If you want to upload large files, you'll definitely need to look into WCF Streaming Mode.

    Basically, you can change the transfer mode on your binding; by default, it's buffered, i.e. the whole message needs to be buffered on the sender, serialized, and then transmitted as a whole.

    With Streaming, you can define either one-way streaming (for uploads only, for downloads only) or bidirectional streaming. This is done by setting the transferMode of your binding to StreamedRequest, StreamedResponse, or just plain Streamed.

    <bindings>
       <basicHttpBinding>
          <binding name="HttpStreaming" 
                   maxReceivedMessageSize="2000000"
                   transferMode="StreamedRequest"/>
       </basicHttpBinding>
    </bindings>
    

    Then you need to have a service contract which either receives a parameter of type Stream (for uploads), or returns a value of type Stream (for downloads).

    [ServiceContract]
    public interface IFileUpload
    {
        [OperationContract]
        bool UploadFile(Stream stream);
    }
    

    That should do it!

    0 讨论(0)
  • 2020-11-30 05:38

    You can use webHttpBinding with TransferMode streamed and a single Stream parameter or Stream response (as appropriate) for large file up/downloads, but you'd have to send any request metadata via URLs and/or headers, unless you're going to devise your own framing on the Stream. You'll have to build a custom non-HTML client (like Silverlight, Flash, etc) though, since browsers don't support random access to local files, and the normal file upload will be a form post, not JSON.

    0 讨论(0)
  • 2020-11-30 05:42

    MTOM is optimized to handle large binary data.

    0 讨论(0)
提交回复
热议问题