图片上传
今天呢做的是一个上传图片的小功能,可能对大家来说这是很简单的东西,而对于我是第一次做这些玩意儿。不做不知道,一做就各种问题都来了,就记录一下吧。
其实主要的东西就是一个button事件,由于文件类型的判断我在客户端用javascript进行判断了,所以在服务器端进行一些上传的操作了。
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (PicFileUpload.HasFile)
{
string fileName = PicFileUpload.FileName;
int pos = fileName.LastIndexOf(".");
string PartOfFileName = fileName.Substring(pos, fileName.Length - pos);
StringBuilder sb = new StringBuilder();
sb.Append(DateTime.Now.Year);
sb.Append("_");
sb.Append(DateTime.Now.Month);
sb.Append("_");
sb.Append(DateTime.Now.Day);
sb.Append("_");
sb.Append(DateTime.Now.Hour);
sb.Append("_");
sb.Append(DateTime.Now.Minute);
sb.Append("_");
sb.Append(DateTime.Now.Second);
sb.Append(PartOfFileName);
this.Label1.Text = DateTime.Now.ToString("YYYY_MM_DD");
string savePath = Server.MapPath("/admin/ProductsPic/");
if (!System.IO.Directory.Exists(savePath))
{
System.IO.Directory.CreateDirectory(savePath);
}
string orignName,newName;
orignName = MapPath("..")+"\\admin\\ProductsPic\\" + PicFileUpload.FileName;
PicFileUpload.SaveAs(orignName);
newName = MapPath("..")+"\\admin\\ProductsPic\\" + sb.ToString();
System.IO.File.Copy(orignName,newName,true);
System.IO.File.Delete(orignName);
PicFileUpload.SaveAs(newName);
}
{
if (PicFileUpload.HasFile)
{
string fileName = PicFileUpload.FileName;
int pos = fileName.LastIndexOf(".");
string PartOfFileName = fileName.Substring(pos, fileName.Length - pos);
StringBuilder sb = new StringBuilder();
sb.Append(DateTime.Now.Year);
sb.Append("_");
sb.Append(DateTime.Now.Month);
sb.Append("_");
sb.Append(DateTime.Now.Day);
sb.Append("_");
sb.Append(DateTime.Now.Hour);
sb.Append("_");
sb.Append(DateTime.Now.Minute);
sb.Append("_");
sb.Append(DateTime.Now.Second);
sb.Append(PartOfFileName);
this.Label1.Text = DateTime.Now.ToString("YYYY_MM_DD");
string savePath = Server.MapPath("/admin/ProductsPic/");
if (!System.IO.Directory.Exists(savePath))
{
System.IO.Directory.CreateDirectory(savePath);
}
string orignName,newName;
orignName = MapPath("..")+"\\admin\\ProductsPic\\" + PicFileUpload.FileName;
PicFileUpload.SaveAs(orignName);
newName = MapPath("..")+"\\admin\\ProductsPic\\" + sb.ToString();
System.IO.File.Copy(orignName,newName,true);
System.IO.File.Delete(orignName);
PicFileUpload.SaveAs(newName);
}
}
后来发现这段代码其实写的蛮垃圾的,但我又是第一次写这些IO操作的东西,也没办法..由于我是要将图片上传至指定位置,而且文件的命名要根据系统时间来命名,所以我先将文件的后缀名取出来。当我用字符串拼接好系统时间(其实我后来发现可以用DateTime.Now.ToString("yyyyMMddhhmmss"),不知道有这个东西啊 -,- )却发现文件名是只读的....ORZ....
后来在网上找到另外一种思路,就是先保存上传文件,然后复制原文件到一个新的文件,并且新文件用系统时间命名,然后在删除旧的文件,保存新的文件,这就是大概思路了。在这些过程中,mappath又给我带来了不少的困扰 ,目录这个问题还听麻烦,搞了大半天,迷迷糊糊算是明白一些,还有待继续研究...
先dota去
还有,最近好冷
![]()
浙公网安备 33010602011771号