//.aspx后台代码
string strDocExt;//获取文件后缀名
string strDocType;
int intDocLen;
Stream objStream;
SqlConnection conn;
SqlCommand cmd;
if(IsValid)
{
     if(txtFileContents.PostedFile !=null)
{
    int pos = txtFileContents.PostedFile.FileName.LastIndexOf(".");
    strDocExt = txtFileContents.PostedFile.FileName.Substring        (pos,txtFileContents.PostedFile.FileName.Length-pos).ToLower();//取文件后缀名switch(strDocExt)
{
    case ".doc":
strDocType="doc";break;
    case ".ppt":
strDocType="ppt";break;
   default:
strDocType="txt";break;
}

intDocLen = txtFileContents.PostedFile.ContentLength;
byte [] Docbuffer = new byte[intDocLen];//
objStream = txtFileContents.PostedFile.InputStream;
objStream.Read(Docbuffer,0,intDocLen);//读入缓存中

conn = new SqlConnection("connStr");
cmd= new SqlCommand("usp_Resource",conn);cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Resource_Title",SqlDbType.NVarChar,200);
cmd.Parameters.Add("@Resource",SqlDbType.Image);
cmd.Parameters.Add("@Resource_Type",SqlDbType.NVarChar,50);

cmd.Parameters[0].Value = txtTitle.Text;
cmd.Parameters[1].Value = Docbuffer;
cmd.Parameters[2].Value = strDocType;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}//存储过程代码
create Procedure dbo.usp_Resource @Resource_Title nvarchar(200),
@Resource Image,
@Resource_Type nvarchar(50)AS
insert into Resource(Resource_Title,Resource,Resource_Type)
Values(@Resource_Title,@Resource,@Resource_Type)
GO

解决方案 »

  1.   

    昨晚我也写了和你一样的程序,碰到一样的问题,但我的和你有些不一样,首先,你的input type=file 是html,不是html控件,这样吧,我把我的解决方法说一下,看看你的是不是和我一样:
    1:看看前端页面form 里 enctype="multipart/form-data"是不是写上了。
    2:<input type=file name="file1">,一定要有name 属性,否则后台得不到上传文件,不过你用的好象是html控件,可以试试看。
      

  2.   

    我前台代码是:
    <%@ Page language="c#" Codebehind="upload_re.aspx.cs" AutoEventWireup="false" Inherits="WiteFile.upload_re" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>upload_re</title>
    <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    <meta content="C#" name="CODE_LANGUAGE">
    <meta content="JavaScript" name="vs_defaultClientScript">
    <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" encType="multipart/form-data" runat="server">
    <span>标题</span><br>
    <asp:textbox id="txtTitle" style="Z-INDEX: 101; LEFT: 56px; POSITION: absolute; TOP: 8px" runat="server"
    Width="184px" Height="23px" EnableViewState="False"></asp:textbox><asp:requiredfieldvalidator id="valrTitle" ControlToValidate="txtTitle" ErrorMessage="*Required" Runat="server">*Requried</asp:requiredfieldvalidator><br>
    <br>
    <span>上传原文件</span><br>
    <input id="txtFileContents" type="file" name="txtFileContents" runat="server">
    <br>
    <br>
    <asp:button id="btnSubmit" Runat="server" Text="确定"></asp:button></form>
    </body>
    </HTML>
    好像是缓存有问题。我怎样能确定缓存中是否有数据?