直接将图片以二进制流的方式写入到mysql数据库中,由于数据量大,必然会导致服务器的数据库负载很大
我的建议: 采取将图片存储在物理磁盘 将相对路径存储在数据库中 这样会减小数据库负载
附上 "上传图片" 代码:
///
/// 上传图片
///
/// 文件框名称
/// 上传文件路径,url
/// 文件的最大值,单位为字节
/// 类型:1表示图片;0表示所有文件
///
public static string upfiles(System.Web.UI.HtmlControls.HtmlInputFile files, string paths, long fmax, string ftype)
{
//files 文件上传组件的名称;paths 要上传到的目录;fmax是上传文件最大值;ftype是上传文件的类型
//默认上传文件最大值100k,文件类型为所有文件
//1为图片jpg or gif;0为所有文件
//如果文件大于设定值,返回代码0
//如果文件类型错误,返回代码1
//初始化
long fileMax = 100000;
string fileType = "0";
string fileTypet = "";
fileMax = fmax;
fileType = ftype;
if (files.PostedFile.ContentLength > fileMax)
{
return "0";
//返回错误代码,结束程序
}
fileTypet = System.IO.Path.GetExtension(files.PostedFile.FileName).ToLower();
if (fileType == "1")
{
if (fileTypet != ".jpg" && fileTypet != ".jpeg" && fileTypet != ".gif")
{
return "1";
//返回错误代码,结束程序
}
}
string destdir = System.Web.HttpContext.Current.Server.MapPath(paths);
string filename = CFun.RandomWord() + fileTypet;
string destpath = System.IO.Path.Combine(destdir, filename);
//检查是否有名称重复,如果重复就在前面加从0开始的数字
int i = 0;
string tempfilename = filename;
while (System.IO.File.Exists(destpath))
{
//有重复
tempfilename = i.ToString() + filename;
destpath = System.IO.Path.Combine(destdir, tempfilename);
i = i + 1;
}
//没有重复,保存文件
files.PostedFile.SaveAs(destpath);
//返回文件名称
return tempfilename;
}