0

asp FileUpload コントロールを使用して画像の簡単なアップロード操作を実行し、それを Oracle データベースに保存しようとしています。数行をハードコーディングしましたが、何とか成功しました。しかし、私は本当に問題を理解したいと思っており、専門家の意見を求めています. 多くのグーグル検索の後、Web アプリケーションでさまざまなコード スニペットを使用しようとしましたが、最終的に失敗しました。これが私のために部分的に機能したコードです。

protected void btnSubmit_Click(object sender, EventArgs e)
    {
        String strFileName = Path.GetFileName(imgUpload.PostedFile.FileName);
        String strFileExtension = Path.GetExtension(imgUpload.PostedFile.FileName);
        byte[] byteArray = null;
        if (imgUpload.PostedFile != null)
        {
            using (FileStream fs = new FileStream(strFileName, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                byteArray = new byte[fs.Length];
                int iBytesRead = fs.Read(byteArray, 0, (int)fs.Length);
            }
            string sql = " INSERT INTO IMAGETBL(ID,IMAGE) VALUES(:ID, :IMAGE) ";
            OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVER_NAME=XE)));User Id=sakthi_studdb;Password=sakthi;");
            try
            {
                conn.Open();
                OracleCommand cmd = new OracleCommand(sql, conn);
                cmd.Parameters.Add("ID", OracleDbType.Int32, 4, ParameterDirection.Input);
                cmd.Parameters.Add("IMAGE", OracleDbType.Blob, byteArray, ParameterDirection.Input);
                cmd.ExecuteNonQuery();
                secondlabel.Text = "Image added to blob field";
            }
            catch (Exception ex)
            {
                secondlabel.Text = ex.ToString();
            }
            finally
            {
                conn.Close();
            }
        }

    }

このコードを実行すると、Filenotfound エラーが表示されます。ファイル 'C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0' が見つかりませんでした。それを機能させるには、イメージ ファイルを上記の場所に手動でコピー ペーストする必要がありました。ディレクトリを作成し、そこに画像を一時的に保存する方法が必要です。後で同じイメージを Oracle データベースに挿入する必要があります。

                    HttpPostedFile imgFile = imgUpload.PostedFile;
            int imgFileLength = imgFile.ContentLength;
            if (imgFileLength > 0)
            {
                var fileName = System.IO.Path.GetFileName(imgFile.FileName);
                var fileUpload = Path.Combine(Server.MapPath("~/user_uploads"), fileName);
                imgFile.SaveAs(fileUpload);
                if (System.IO.File.Exists(fileUpload))
                {
                    using (System.IO.StreamReader sr = new System.IO.StreamReader(fileUpload))
                    {
                        var input = sr.ReadToEnd();
                        var lines = Regex.Split(input, "#!#");

そしてもう一つ..

string path = HttpContext.Current.ApplicationInstance.Server.MapPath("~/user_uploads"); string fn = System.IO.Path.GetFileName(imgUpload.PostedFile.FileName); imgUpload.PostedFile.SaveAs(System.IO.Path.Combine(path, fn));
Mylabel.Text = Path.GetFullPath(strFileName); imgUpload.PostedFile.SaveAs(strFileName);

これらのスニペットはほとんど理解できませんでした。また、同じことを達成するためのより簡単な方法を知っている場合は、提案してください。助けてください!

4

1 に答える 1

0

ファイルをアップロードしていて、それをデータベースにプッシュしたい場合は、postedFile 値を取得して使用できるはずです。

最初の切り取りを微調整する:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    if (imgUpload.PostedFile != null)
    {
        BinaryReader b = new BinaryReader(imgUpload.InputStream);
        byte[] byteArray = b.ReadBytes(imgUpload.ContentLength);

        string sql = " INSERT INTO IMAGETBL(ID,IMAGE) VALUES(:ID, :IMAGE) ";
        OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVER_NAME=XE)));User Id=sakthi_studdb;Password=sakthi;");
        try
        {
            conn.Open();
            OracleCommand cmd = new OracleCommand(sql, conn);
            cmd.Parameters.Add("ID", OracleDbType.Int32, 4, ParameterDirection.Input);
            cmd.Parameters.Add("IMAGE", OracleDbType.Blob, byteArray, ParameterDirection.Input);
            cmd.ExecuteNonQuery();
            secondlabel.Text = "Image added to blob field";
        }
        catch (Exception ex)
        {
            secondlabel.Text = ex.ToString();
        }
        finally
        {
            conn.Close();
        }
    }

}
于 2013-03-29T19:38:13.457 に答える