2014-05-24 88 views
0

我寫的內部控制器驗證碼如何圖像文件轉換成二進制在asp.net

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); 
BinaryReader br = new BinaryReader(fs); 
byte[] image = br.ReadBytes((int)fs.Length); 

我收到此錯誤

的最佳重載的方法匹配或System.IO.FileStream .FileStream 有一些無效的參數。

+0

你能證明你的整個控制器動作讀取文件? –

+0

[HttpPost] public byte [] NewReport(string filename) { FileStream fs = new FileStream(fileName,FileMode.Open,FileAccess.Read); BinaryReader br = new BinaryReader(fs); byte [] image = br.ReadBytes((int)fs.Length); } – user3532152

+0

我甚至嘗試將參數類型從字符串轉換爲HttpPostedFileBase,但又是同樣的錯誤。它還表示傳入文件是空的... – user3532152

回答

0

你的代碼是正確的,但我會只使用快捷鍵此類型的任務:

byte[] image = File.ReadAllBytes(fileName); 

編輯: 如果你想發佈在行動的文件,然後將其保存在數據庫 - 最簡單的方法這樣做是形式張貼:

<form action="@Url.Action("NewReport")" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file" id="file" /> 
    <input type="submit" name="submit" value="Submit" /> 
</form> 

那麼你的行動應該是這樣的:

[HttpPost] 
public ActionResult NewReport(HttpPostedFileBase file) 
{ 
    byte[] image = new byte[file.ContentLength]; 
    file.InputStream.Read(image, 0, image.Length); 
    //here the code that saves image to db and returns action result 
} 

注意,在asp.net發佈文件的最大長度爲4MB,但是你可以很容易地擴展到適合你的尺寸在web.config文件:

<configuration> 
    <system.web> 
     <!--here I extend max length to 200Mb--> 
     <httpRuntime maxRequestLength="204800" /> 
    </system.web> 
</configuration> 
+0

我甚至試過這個,但它仍然給「文件」錯誤。它說System.Web.Mvc.Controller.File是一個在給定的上下文中無效的方法。來自參數的更多文件名也是空的。 – user3532152

+0

我用代碼片段更新了我的答案,該代碼片段將文件發佈到服務器中,並從姿態文件中獲取字節。希望它會有所幫助。 –

相關問題