标题:怎么实现上传图片到数据库?(sql)
只看楼主
meteor86
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-4-14
 问题点数:0 回复次数:8 
怎么实现上传图片到数据库?(sql)
怎么实现上传图片到数据库呢?
要用FileUpLoad控件吗?

我在网上查的,好象首先要设置enctype,      enctype是什么?在哪里?      
请教了.
搜索更多相关主题的帖子: 上传图片 数据库 sql enctype FileUpLoad 
2008-04-16 11:01
shezhenhui1989
Rank: 1
来 自:安徽
等 级:新手上路
帖 子:287
专家分:0
注 册:2008-2-1
得分:0 
private void UploadFile()
 {
 
    string strFilePathName = loFile.PostedFile.FileName;
    string strFileName = Path.GetFileName(strFilePathName);
    int FileLength = loFile.PostedFile.ContentLength;

    if(FileLength<=0)
        return;

   try
    {
        
        Byte[] FileByteArray = new Byte[FileLength];

        Stream StreamObject = loFile.PostedFile.InputStream;

       StreamObject.Read(FileByteArray,0,FileLength);

        string strCon = System.Configuration.ConfigurationSettings.AppSettings["DSN"];
        SqlConnection Con = new SqlConnection(strCon);
        String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) VALUES (@Image, @ContentType, @ImageDescription, @ImageSize)";
        SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
        CmdObj.Parameters.Add("@Image",SqlDbType.Binary, FileLength).Value = FileByteArray;
        CmdObj.Parameters.Add("@ContentType", SqlDbType.VarChar,50).Value = loFile.PostedFile.ContentType;        

        CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar,200).Value = tbDescription.Text;
        
        CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt,8).Value = FileLength;
        Con.Open();
        CmdObj.ExecuteNonQuery();
        Con.Close();

        Response.Redirect("ShowAll.aspx");
    }
    catch(Exception ex)
    {
        throw ex;
    }
}
2008-04-16 11:54
hebingbing
Rank: 6Rank: 6
来 自:黄土高坡
等 级:贵宾
威 望:27
帖 子:3417
专家分:371
注 册:2007-10-22
得分:0 
你是要将图片以二进制的方式存到数据库吗还是光放其路径……
enctype是来设置MIME编码格式的……
2008-04-16 12:04
meteor86
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-4-14
得分:0 
要将图片以二进制的方式存到数据库的.
2008-04-16 12:34
hebingbing
Rank: 6Rank: 6
来 自:黄土高坡
等 级:贵宾
威 望:27
帖 子:3417
专家分:371
注 册:2007-10-22
得分:0 
2楼给的代码就可以实现……
在aspx页面首先设置:
<FORM ENCTYPE="multipart/form-data" RUNAT="server" ID="Form1">//enctype是来设置MIME编码格式以使可以上传图片……
我给你解释一下他的代码吧……
private void UploadFile()
{

    string strFilePathName = loFile.PostedFile.FileName;  //获取完整的路径
    string strFileName = Path.GetFileName(strFilePathName);//获取图片的名称
    int FileLength = loFile.PostedFile.ContentLength;//获取图片的大小

    if(FileLength<=0)//判断是否有图片
        return;

   try
    {
        
        Byte[] FileByteArray = new Byte[FileLength];//用图片的长度来初始化一个字节数组存储临时的图片文件

        Stream StreamObject = loFile.PostedFile.InputStream; //建立文件流对象


       StreamObject.Read(FileByteArray,0,FileLength);// 读取图片数据到临时存储体FileByteArray,0为数据指针位置,fileLength为数据长度


        string strCon = System.Configuration.ConfigurationSettings.AppSettings["DSN"];
        SqlConnection Con = new SqlConnection(strCon);
        String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) VALUES (@Image, @ContentType, @ImageDescription, @ImageSize)";
        SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
        CmdObj.Parameters.Add("@Image",SqlDbType.Binary, FileLength).Value = FileByteArray;//将二进制的图片赋值给@Image
        CmdObj.Parameters.Add("@ContentType", SqlDbType.VarChar,50).Value = loFile.PostedFile.ContentType; //记录图片类型      

        CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar,200).Value = tbDescription.Text;//其他的一些表单元素,比如说明等的东东
        
        CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt,8).Value = FileLength;//记录图片长度,读取数据的时候会用到的

        Con.Open();
        CmdObj.ExecuteNonQuery(); //执行Sqlcommand
        Con.Close();//关闭链接

        Response.Redirect("ShowAll.aspx");//跳转页面
    }
    catch(Exception ex)//抛出异常
    {
        throw ex;
    }
}
2008-04-16 13:01
meteor86
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-4-14
得分:0 
我只会用FileUpLoad控件,将图片上传到一个文件夹,不知道怎么上传到数据库.呵呵
2008-04-16 13:51
meteor86
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-4-14
得分:0 
上面所写的  loFile  是  FileUpLoad控件 的 ID 吗?
2008-04-16 13:55
meteor86
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-4-14
得分:0 
Stream,     StreamObject,需要加什么头文件吗?
错误  找不到类型或命名空间名称“Stream”(是否缺少 using 指令或程序集引用?)
2008-04-16 14:09
hebingbing
Rank: 6Rank: 6
来 自:黄土高坡
等 级:贵宾
威 望:27
帖 子:3417
专家分:371
注 册:2007-10-22
得分:0 
对,就是Fileupload的id

using
2008-04-16 16:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-209309-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.270845 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved