如何将上传文件保存到数据库

amass1024 2009-04-09 02:25:57
在Asp.net平台下如何将客户端上传的文件保存到SqlServer数据库中
另外,如果点击文件名,如何将文件显示或下载到客户端
先达人请教!
...全文
223 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuzijing 2009-04-09
  • 打赏
  • 举报
回复
库里存文件?

有你疯狂的时候!
huang_net 2009-04-09
  • 打赏
  • 举报
回复
数据库字段为Image类型
pengfangxu8 2009-04-09
  • 打赏
  • 举报
回复
我建议数据库保存路径
tuotuo_happy 2009-04-09
  • 打赏
  • 举报
回复
顶..
hmily821023 2009-04-09
  • 打赏
  • 举报
回复
ding
Jerry_hu 2009-04-09
  • 打赏
  • 举报
回复
如果不是需要保密的文件,建议数据库保存文件路径,文件数据保存到服务器文件夹,效率会好些
周公 2009-04-09
  • 打赏
  • 举报
回复
用带参数的SQL语句或者存储过程都行。

CREATE TABLE FileList (
FileID bigint IDENTITY (1, 1) NOT NULL ,
FileName nvarchar(50) NOT NULL ,
FileData image NOT NULL ,
FileLength int NOT NULL ,
Mime varchar(20) NOT NULL ,
UploadDate datetime NULL DEFAULT getdate()
)
GO

C#代码

protected void btnUpload_Click(object sender, EventArgs e)
{
//如果选择了文件进行上传
if (FileUpload1.HasFile)
{
string fileName = FileUpload1.FileName;
int contentLength = FileUpload1.PostedFile.ContentLength;
string mime = FileUpload1.PostedFile.ContentType;
byte[] data = FileUpload1.FileBytes;
//所有图片文件的MIME都是以image/开始的,如:jpg图片的Mime为:image/pjpeg
//如果上传的是图片文件
if (mime.StartsWith("image/"))
{
string sql = "insert into FileList(FileName,FileData,FileLength,Mime)values(@FileName,@FileData,@FileLength,@Mime)";
SqlParameter[] parameters = new SqlParameter[4];
parameters[0] = new SqlParameter("@FileName", SqlDbType.NVarChar, 50);
parameters[0].Value = fileName;

parameters[1] = new SqlParameter("@FileData", SqlDbType.Image, int.MaxValue);
parameters[1].Value = data;

parameters[2] = new SqlParameter("@FileLength", SqlDbType.Int, 4);
parameters[2].Value = contentLength;

parameters[3] = new SqlParameter("@Mime", SqlDbType.VarChar, 50);
parameters[3].Value = mime;

SqlDbHelper helper = new SqlDbHelper(ConfigurationManager.ConnectionStrings["Conn"].ConnectionString);
if (helper.ExecuteNonQuery(sql, CommandType.Text, parameters) > 0)
{
Response.Write("<script language='javascript'>alert('上传成功!');</script>");
}
else
{
Response.Write("<script language='javascript'>alert('上传失败');</script>");
}
}
else
{
Response.Write("<script language='javascript'>alert('请上传图片文件');</script>");
}
}
else
{
Response.Write("<script language='javascript'>alert('请选择上传文件');</script>");
}
}
kkun_3yue3 2009-04-09
  • 打赏
  • 举报
回复
表信息

CREATE TABLE [dbo].[ST_Image](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ImageData] [image] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
kkun_3yue3 2009-04-09
  • 打赏
  • 举报
回复
上传到数据库

#region Insert
/// <summary>
/// 新增操作
/// </summary>
/// <param name="e">ST_ImageEntity实体</param>
/// <returns>自增编号</returns>
public override int Insert( ST_ImageEntity e ) {
//构造SQL语句
string sql = "INSERT INTO [ST_Image] (ImageData)VALUES(@ImageData); SELECT @@Identity";

//构造参数
SqlParameter[] parameters = {
new SqlParameter("@ImageData",SqlDbType.Image),
};

//为参数赋值
int i = 0;
parameters[ i++ ].Value = e.ImageData;

//执行SQL语句
try {
object obj = db.ExecuteScalar( CommandType.Text, sql, parameters ) ?? "-1";
int Identity;
if( int.TryParse( obj.ToString(), out Identity ) )
return Identity;
return -1;
} catch( Exception exp ) {
throw exp;
}
}
#endregion


其中ImageData类型为byte[]

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧