2017-08-05 59 views
0

如何在運行時設置HttpPostedFileBase ContentType值?如何在運行時設置HttpPostedFileBase ContentType值

HttpPostedFileBase upl=null; 
    string path="/exelFile/book1.xlsx"; 

    //-----Set Name Runtime 
    var Name="FileName.xlsx"; 
    //-----Set Type Runtime 
    var type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";   
    byte[] bytes =System.IO.File.ReadAllBytes(Server.MapPath(Path)); 
    upl = (HttpPostedFileBase)new MemoryPostedFile(bytes, Name); 

    //=====>how set type 
    upl.ContentType 
    //============== 
+0

'HttpPostedFileBase'用於從瀏覽器上傳文件。它的'ContentType'是隻讀的(它只能吸氣)。什麼是「MemoryPostedFile」?你想在這裏做什麼? –

+0

我想MemoryPostedFile到這個HttpPostedFileBase。有沒有辦法? –

+0

你還沒有說過'MemoryPostedFile'是什麼。但這樣做沒有意義。你想實現什麼? –

回答

0

非常感謝@StephenMuecke。通過將「ContentType」添加到以下函數中即可解決。

public class MemoryPostedFile : HttpPostedFileBase 
    { 
     private readonly byte[] fileBytes; 

     public MemoryPostedFile(byte[] fileBytes, string fileName = null,string ContentType=null) 
     { 
      this.fileBytes = fileBytes; 
      this.FileName = fileName; 
      this.ContentType = ContentType; 
      this.InputStream = new MemoryStream(fileBytes); 
     } 

     public override int ContentLength => fileBytes.Length; 

     public override string FileName { get; } 

     public override string ContentType { get; } 

     public override Stream InputStream { get; } 
    }