图片上传

今天呢做的是一个上传图片的小功能,可能对大家来说这是很简单的东西,而对于我是第一次做这些玩意儿。不做不知道,一做就各种问题都来了,就记录一下吧。

其实主要的东西就是一个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);

               

 

            }

        } 

后来发现这段代码其实写的蛮垃圾的,但我又是第一次写这些IO操作的东西,也没办法..由于我是要将图片上传至指定位置,而且文件的命名要根据系统时间来命名,所以我先将文件的后缀名取出来。当我用字符串拼接好系统时间(其实我后来发现可以用DateTime.Now.ToString("yyyyMMddhhmmss"),不知道有这个东西啊 -,- )却发现文件名是只读的....ORZ....

后来在网上找到另外一种思路,就是先保存上传文件,然后复制原文件到一个新的文件,并且新文件用系统时间命名,然后在删除旧的文件,保存新的文件,这就是大概思路了。在这些过程中,mappath又给我带来了不少的困扰 ,目录这个问题还听麻烦,搞了大半天,迷迷糊糊算是明白一些,还有待继续研究...

先dota去

还有,最近好冷 

 

 

 

posted @ 2009-11-04 19:31  Tmac_  阅读(220)  评论(0)    收藏  举报