2015-10-15 5 views
0

Я пытаюсь получить файл с помощью Web Api от пользователя, а затем преобразовать файл в FileStream, не записывая файл на сервер (должен оставаться в памяти).Преобразование Request.Content в FileStream C#

У меня есть код, который позволит мне записать его на сервер, но все попытки поместить его в FileStream без записи файла на сервер потерпели неудачу.

public class ReceiverController : ApiController 
{ 

    public Task<HttpResponseMessage> Upload() 
    { 
     HttpRequestMessage request = this.Request; 

     if (!request.Content.IsMimeMultipartContent()) 
     { 
      throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.UnsupportedMediaType)); 
     } 

     string root = HttpContext.Current.Server.MapPath("~/App_Data/"); 
     var provider = new MultipartFormDataStreamProvider(root); 

     var task = request.Content.ReadAsMultipartAsync(provider). 
      ContinueWith<HttpResponseMessage>(o => 
     { 
      FileInfo fileInfo = new FileInfo(provider.FileData.First().LocalFileName); 
      string fileName = provider.FileData.First().Headers.ContentDisposition.FileName.Replace("\"", ""); 
      if (!File.Exists(Path.Combine(root, fileName))) 
      { 

       File.Move(fileInfo.FullName, Path.Combine(root, fileName)); 
      } 

      return new HttpResponseMessage() 
      { 
       Content = new StringContent("File uploaded.") 
      }; 
     }); 
     return task; 
    } 
} 

ответ

0

fileName.PostedFile.InputStream --- дает мне поток, и я использую следующий код, чтобы преобразовать его в массив байтов. Затем массив байтов преобразуется в поток потока в соответствии со следующим кодом.

BinaryReader br = new BinaryReader(fileName); 
     bytary= br.ReadBytes((Int32)fileName.Length); 
      for(int i = 0; i < bytary.Length; i++) 
        { 
         fileStream.WriteByte(bytary[i]); 
           } 
Смежные вопросы