对于美食模块的图片上传,今天我主要增加了上传图片显示部分,在这里把图片上传与信息保存进行了分离,
主要利用了label控件,增添了两个label,一个button用来上传,一个image(id为dismc)控件用来显示图片,
一个label(id为mappath)控件用来显示上传图片的物理路径,一个label(id为mcphoto)控件用来记录上传
图片的虚拟路径。该值传给数据库表中的QiaomenPhoto这一项。也传给image控件的文件地址。
顺便把文件格式的判断也加进来了,这样,这部分上传图片就比较完整了。可惜我现在还不会封装。
具体代码如下所示:
protected void upload_Click(object sender, EventArgs e)
{
//这里的上传利用的MSDN上面的经典上传
Boolean fileok = false;//用来判断上传文件格式
//返回与Web服务器上指定的虚拟路径相对应的物理文件路径
string path = Server.MapPath("~/MeiShi/");
if (photoupload.HasFile) //该控件是否包含文件的判断
{
//取上传文件的扩展名,并将其转化为小写
string fileExtensions = System.IO.Path.GetExtension(photoupload.FileName).ToLower();
//定义图片扩展名的数组
string[] allowedExtension ={ ".jpeg", ".jpg", ".bmp", ".gif", ".tiff", ".exif", ".png", ".icon" };
for (int i = 0; i < allowedExtension.Length; i++)//图片格式判断
{
if (fileExtensions == allowedExtension[i])
{
fileok = true;
}
}
if (fileok)//上传的是图片
{
//图片重命名,这一段应该是可以简写的,可是目前只能做到这个地步
string sfilename = photoupload.PostedFile.FileName;
sfilename = sfilename.Substring(sfilename.IndexOf("."));//取文件扩展名
Random rannumber = new Random();//实例化一个随机数
DateTime timenow = DateTime.Now;
string time = timenow.ToString();
time = time.Replace(":", "");//去掉时间格式中的:、-以及空格
time = time.Replace("-", "");
time = time.Replace(" ", "");
//图片重命名=当前时间+四位随机数+图片扩展名
sfilename = time + rannumber.Next(1000, 9999) + sfilename;
string wpath = "MeiShi/" + sfilename;//把图片放在该文件夹中
try
{
//保存上传文件的内容,存放在该目录下面
photoupload.PostedFile.SaveAs(path + sfilename);
success.Text = "上传图片成功!";
mappath.Text = photoupload.PostedFile.FileName;//取上传文件的完整路径
dismc.ImageUrl = wpath;//显示上传图片
mcphoto.Text = wpath;//该信息用来插入数据库
}
catch (System.Exception exe)
{
success.Text = "上传图片失败!";
}
}
}
else
{
success.Text = "不能上传该类型的图片!";
}
}