Consume FileStream from WCT Restful service

那年仲夏 提交于 2019-12-07 09:44:28

I don't know is this something what you are trying to do.

Service

public Stream GetMultimedia(string id)
{ 
    string filePath = MultimediaBLL.GetFilePath(int.Parse(id));
    if (string.IsNullOrEmpty(filePath))
        return null;

    try
    {
        FileStream multimediaFileStream = File.OpenRead(filePath);

        WebOperationContext.Current.OutgoingResponse.ContentType = "Your/contentType";
        WebOperationContext.Current.OutgoingResponse.Headers["Content-Disposition"] = "attachment; filename=Your_file_name.png";

        return multimediaFileStream;
    }
    catch (Exception ex)
    {
        Console.WriteLine("Not able to get multimedia stream:{0}", ex.Message);
        throw ex;
    }
}

Client

RestClient client = new RestClient(urlService);
RestRequest request = new RestRequest
{
    Method = Method.GET,
    RequestFormat = DataFormat.Xml,
    Resource = "GetMultimedia/{id}"
};

request.AddParameter("id", idMultimedia, ParameterType.UrlSegment);

context.Response.Clear();
content.Response.ClearHeaders();

# write original responseStream to the context.Response.OutputStream
request.ResponseWriter = (responseStream) => responseStream.WriteTo(context.Response.OutputStream);

var response = client.DownloadData(request);

# maybe you need to add content type and file name as well
context.Response.AddHeader("Content-Type", "fetch from response");
context.Response.AddHeader("Content-Disposition", "fetch from response");

context.Response.Flush();
context.Response.Close();
context.Response.End();

if (!response.StatusCode != HttpStatusCode.OK)
    # do something
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!