با سلام بنده یک جدول دارم که داخلش از Filestream Sql استفاده کردم و میخوام الان بوسیله یک FileResult در MVC فایل را برای دانلود به کاربر بدم متد Upload رو نوشتم اما دانلودم رو نمی دونم چطوری باید بنویسم البته با EF / مرسی...
در واقع زمان دانلود فایل بدون پسوند به سمت کاربر میره
public FileResult Download(int Id) { FileStreamMVC.Models.FileStreamDataEntities db = new Models.FileStreamDataEntities(); SqlDataReader rdr; byte[] fileContent = null; string mimeType = ""; string fileName = ""; const string connect = @"Data source=Win8-IT;initial catalog=FileStreamData;user id=sa;password=123"; using (var conn = new SqlConnection(connect)) { var qry = "SELECT StudentPic,Name,MIMEType FROM Student WHERE ID = @ID"; var cmd = new SqlCommand(qry, conn); cmd.Parameters.AddWithValue("@ID", Id); conn.Open(); rdr = cmd.ExecuteReader(); if (rdr.HasRows) { rdr.Read(); fileContent = (byte[])rdr["StudentPic"]; mimeType = rdr["MIMEType"].ToString(); fileName = rdr["Name"].ToString(); } } return File(fileContent, mimeType, fileName); }
اینم عکس دانلود فایل
خواهشا اگه کسی میتونه کمک کنه
باید در filename پسوند را نیز اضافه کنید
سلام مهندس عزیز
آخه فایل بصورت Binary ذخیره شده . چطوری موقع متد دانلود پسوندش رو بخونم؟
مرسی
کافیه فقط در نام اینکار رو بکنید تا با اون پسوند ذخیره بشه و سیستم کاربر فایل رو شناسایی کنه
کد اصلاح شده که کار داد مجبور شدم نام فایل هم ذخیره کنم
public FileContentResult FileDownload(int Id) { byte[] fileData; string fileName; FileStreamMVC.Models.FileStreamDataEntities dataContext = new Models.FileStreamDataEntities(); var record = from p in dataContext.Student where p.Id == Id select p; //only one record will be returned from database as expression uses condtion on primary field //so get first record from returned values and retrive file content (binary) and filename fileData = (byte[])record.First().StudentPic.ToArray(); fileName = record.First().FileName; return File(fileData, "text", fileName); }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)