亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法將 SQL VARBINARY 正確轉換為 byte[] 并在 ASP.NET c# 中轉換為

無法將 SQL VARBINARY 正確轉換為 byte[] 并在 ASP.NET c# 中轉換為

C#
慕仙森 2022-10-15 14:38:53
這是我正在做的事情:public static MVC_Picture GetPictureRecord(int pictureID){    int pictureId = pictureID;    MVC_Picture _picture = new MVC_Picture(); //object that stores name and array    var connString = db.connString;    string cmdText = "SELECT PictureName, PictureImage FROM Picture WHERE CONVERT(INT, ID) =@pictureId;";    using (var connection = new SqlConnection(connString))    {        using (var sqlCmd = new SqlCommand(cmdText, connection))        {            SqlParameter param1 = new SqlParameter();            param1.ParameterName = "@pictureId";            param1.Value = pictureId;            sqlCmd.Parameters.Add(param1);            connection.Open();            SqlDataReader dr = sqlCmd.ExecuteReader();            while (dr.Read())            {                _picture.Id = pictureId;                _picture.PictureName = Convert.ToString(dr["PictureName"]);                _picture.PictureImage = (byte[])(dr["PictureImage"]); //Problem            }            connection.Close();        }    }    return _picture; }當我轉換為時,byte[]我得到如下信息:{byte[4354567]}然后我試圖將數組轉換為Image這樣:Image img = (Image)converter.ConvertFrom(_picture.PictureImage);ViewModel.FeaturedImage = img;在視圖中我使用:<img src="@ViewModel.FeaturedImage" alt="Featured Image" />我錯過了什么?
查看完整描述

1 回答

?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

<img src=...必須通過其路徑指向圖像文件,例如<img src="/myImage.jpg">。您不能將圖像的二進制表示形式粘貼在其中src并使其正常工作。


因此,您可以將這些二進制圖像寫入磁盤的某個地方(您可能不想這樣做,因為那時您正在復制數據,并且必須管理同步)。


或者您可以創建某種圖像處理程序,因此<img src=類似于: <img src="/myHandler/imageId",然后讓處理程序從數據庫中讀取二進制數據并以圖像進行響應。


這是我過去用來從數據庫中讀取二進制 PDF 并將其作為文件返回的 MVC 控制器操作。這是在我的Competition控制器中。如果這是返回圖像,您可以將其稱為:


<img src="Competition/ViewJobDescription?competitionId=1234" />


    public ActionResult ViewJobDescription(int competitionId)

    {

        string errorMsg = "";

        var competition = new DBModel.Competition();

        try

        {               

            competition = DBModel.Competition.GetCompetition(competitionId);

            if (competition != null && competition.AttachmentContent != null)

            {

                byte[] fileData = competition.AttachmentContent;

                string filename = competition.AttachmentTitle + ".pdf";

                return File(fileData, "application/pdf", filename);

            }

        }

        catch (Exception ex)

        {

            errorMsg += "An error occured: " + ex.Message;

            LogFile err = new LogFile();

            err.CreateErrorLog(errorMsg);


            ModelState.AddModelError(string.Empty, errorMsg);

        }


        return RedirectToAction("Index", "Home");

    }


查看完整回答
反對 回復 2022-10-15
  • 1 回答
  • 0 關注
  • 214 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號