0

署名パッド データを使用して署名 bmp イメージを作成し、ファイルの場所に保存する作業コードがあります。私の質問は、このコードを変更して、SQL Server 2008 の画像フィールドに画像を挿入するにはどうすればよいですか?

私のコントローラーからの以下は、署名タブレットから署名データを取得し、bmp イメージを作成して、ファイルの場所に保存します。

        [PrincipalPermission(SecurityAction.Demand, Authenticated = true)]
    public ActionResult SaveSignature2(IPrincipal principal) {
        int userId = ((ScoutIdentity)principal.Identity).UserId.Value;
        //Put user code to initialize the page here
        SIGPLUSLib.SigPlus sigObj = new SIGPLUSLib.SigPlus();
        sigObj.InitSigPlus();
        sigObj.AutoKeyStart();

        string visitorname = Request.Form["visitorname"];
        visitorname = visitorname.Replace(" ", ""); //combines the first name with last name with no spaces
        visitorname = visitorname.Trim();
        string thevrvIDstr = Request.Form["vrvID"];
        int thevrvID = Convert.ToInt32(thevrvIDstr);

        //use the same data to decrypt signature
        sigObj.AutoKeyData = Request.Form["SigText"];

        sigObj.AutoKeyFinish();
        sigObj.SigCompressionMode = 1;
        sigObj.EncryptionMode = 2;

        //Now, get sigstring from client
        //Sigstring can be stored in a database if 
        //a biometric signature is desired rather than an image
        sigObj.SigString = Request.Form["hidden"];

        if (sigObj.NumberOfTabletPoints() > 0) {
            sigObj.ImageFileFormat = 0;
            sigObj.ImageXSize = 500;
            sigObj.ImageYSize = 150;
            sigObj.ImagePenWidth = 8;
            sigObj.SetAntiAliasParameters(1, 600, 700);
            sigObj.JustifyX = 5;
            sigObj.JustifyY = 5;
            sigObj.JustifyMode = 5;
            long size;
            byte[] byteValue;
            sigObj.BitMapBufferWrite();
            size = sigObj.BitMapBufferSize();
            byteValue = new byte[size];
            byteValue = (byte[])sigObj.GetBitmapBufferBytes();
            sigObj.BitMapBufferClose();
            System.IO.MemoryStream ms = new System.IO.MemoryStream(byteValue);
            System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
            String path;
            path = System.AppDomain.CurrentDomain.BaseDirectory;
            path = path + "/uploadFiles/Signatures/"+thevrvIDstr+".bmp";
            img.Save(path, System.Drawing.Imaging.ImageFormat.Bmp);



           ViewData["Result"] = ("Image saved successfully to " + path);
        }
        else {
            ViewData["Result"] = "signature has not been returned successfully!";
        }


        ViewData["Result"] = sigObj.SigString;
        //return RedirectToAction("vrSignIn");
        return View();
    }

また、コントローラーの別の場所に、アップロードされたファイルを取得してデータベースに挿入するコードがあります。このコードは正常に動作します。

 [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult UploadTempFiles(string id, string u)
    {
        //this method temporarily stores files 
        string userIdString = Cryptographer.DecryptSymmetric("RijndaelManaged", SecurityImpl.UrlToBase64(u));
        int userId = Convert.ToInt32(userIdString);

        if (Request.Files.Count > 0)
        {
            for (int i = 0; i < Request.Files.Count; i++)
            {
                HttpPostedFileBase file = Request.Files[i];
                int contentlength = file.ContentLength;
                byte[] b = new byte[contentlength];
                Stream s;
                s = file.InputStream;
                s.Read(b, 0, contentlength);
                VisitRequest.AddVisitorSignature(userId, b);
            }
        }

        return View("UploadFiles");
    }

2番目のコードの一部を使用して、最初のコードで画像作成プロセスを中断し、画像をファイルの場所に保存する代わりにデータベースに画像を挿入できると考えています。私はそれを行う方法がわかりません。

4

1 に答える 1