小弟在弄关于.net文件上传的问题(以二进制形式存入数据库),但是好像遇到了问题,最后代码运行后文件转化为二进制
数据没有办法存储,具体代码如下,感激各位大侠了~:<数据表:
DocID int;
DocTitle varchar;
Doc image;
DocType varchar;
Entrydate varchar;过程存储:
CREATE PROCEDURE uSP_BooksUploadFile
@Title varchar(200),
@Doc Image,
@DocType varchar(4)ASINSERT tblBooksUpload(DocTitle,Doc,DocType)
VALUES (@Title,@Doc,@DocType)
GO前台代码:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    
    <form id="frmUpload" method="post" enctype="multipart/form-data" runat="server">
    <div>
    <span>Title:<br />
    </span>
      <asp:textbox id="txtTitle" runat="server" EnableViewState="False"></asp:textbox>&nbsp;
       <asp:requiredfieldvalidator id="valrTitle" runat="server" ErrorMessage="* Required" ControlToValidate="txtTitle">* Required</asp:requiredfieldvalidator><br />
       <br />
       <span>Docutment to Upload:</span><br/>
       <input id="txtFileContents" type="file" runat="server" name="txtFileContents" style="width: 280px" />
       <br />
       <br />
       <asp:button id="btnSubmit" Text="Submit" Runat="server" OnClick="btnSubmit_Click"></asp:button>
        <br />
     
    </div>
    </form>
</body>
</html>后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;public partial class Default6 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        
        //strDocType用于保存上传文件的类型
        string strDocType;        //用于保存文件大小
        int intDocLen;        //Stream用于读取上传数据        Stream objStream;
        SqlConnection BooksConn;
        SqlCommand cmdUploadDoc;        if (IsValid)
        {
            if (txtFileContents.PostedFile != null)
            {
                //文件类型
                string s1 = txtFileContents.PostedFile.FileName.ToString();
                string strDocExt = s1.Substring(s1.Length - 4, 4);   
                switch (strDocExt)
                {
                    case ".doc":
                        strDocType = "doc";
                        break;
                    case ".ppt":
                        strDocType = "ppt";
                        break;
                    case ".htm":
                        strDocType = "htm";
                        break;
                    case ".html":
                        strDocType = "htm";
                        break;
                    case ".jpg":
                        strDocType = "jpg";
                        break;
                    case ".gif":
                        strDocType = "gif";
                        break;
                    default:
                        strDocType = "txt";
                        break;
                }
                //上传文件具体内容
                intDocLen =txtFileContents.PostedFile.ContentLength;
                byte[] Docbuffer = new byte[intDocLen];
                objStream = txtFileContents.PostedFile.InputStream;                //文件保存到缓存
                //缓存将保存到数据库                objStream.Read(Docbuffer, 0, intDocLen);
                BooksConn = new SqlConnection("Server=(local);UID=sa;Database=shixi;Pwd=;");
                cmdUploadDoc = new SqlCommand("uSP_BooksUploadFile", BooksConn);
                cmdUploadDoc.CommandType = CommandType.StoredProcedure;
                cmdUploadDoc.Parameters.Add("@Title ", SqlDbType.VarChar, 200);
                cmdUploadDoc.Parameters.Add("@Doc", SqlDbType.Image);
                cmdUploadDoc.Parameters.Add("@DocType", SqlDbType.VarChar, 4);
                cmdUploadDoc.Parameters[0].Value = txtTitle.Text;
                cmdUploadDoc.Parameters[1].Value = Docbuffer;
                cmdUploadDoc.Parameters[2].Value = strDocType;
                BooksConn.Open();
                int ret = cmdUploadDoc.ExecuteNonQuery();
                if (ret > 0)
                {
                    txtTitle.Text = "";
                    Response.Write("<script>alert('Perfect!');</script>");
                }
                else
                {
                    Response.Write("<script>alert('Error!');</script>");
                    return;
                }
                BooksConn.Close();
            }
        }    }
}

解决方案 »

  1.   

    <input   id="txtFileContents"   type="file"   runat="server"   name="txtFileContents"   style="width:   280px"   /> 
    改成
    <asp:FileUpload ID="txtFileContents" runat="server" />
    代码文件里转换字节改为
    txtFileContents.FileBytes试一下
      

  2.   

    错误没有什么提示,就是数据库image字段里面没有任何数据存入,其他字段有数据存入。
      

  3.   

    txtFileContents.FileBytes
    用这个!另外如果你的文件从长远看越积越多,建议使用文件形式。