最近做的这个项目,文件上传比较用得多,遇到过很多问题,但是还是都解决了…… 呵呵,我很兴奋,就想把它记下来,希望对后来都有些用,当然我这里说的并不全,只是我个人的一些经验:
下面用到的myFile是页面中的一个上传控件。
文件在本地的原始位置: UploadFileName = myFile.PostedFile.FileName;
得到文件的扩展名:UploadFileName.Substring(UploadFileName.LastIndexOf(".") + 1) 得到文件扩展名后,我们想限制用户上传文件的类型就可以用IF来判断了。比如上传图片我们就可以这样来做: if (UploadFileLastName == "jpg" || UploadFileLastName == "JPG" || UploadFileLastName == "gif" || UploadFileLastName == "GIF" || UploadFileLastName == "BMP" || UploadFileLastName == "bmp" || UploadFileLastName == "PNG" || UploadFileLastName == "png" || UploadFileLastName == "");
文件上传到服务器的文件名应该怎么命名呢?我想大家都应该想过这个问题:(1)、用用户原来的文件名又怕多个用户上传的文件名是一样的,这样一样文件就会出现覆盖问题了;(2)、用时间?当然这种方法比第一种方法出现的覆盖率会小一点,但是仍然是相当大的;(3)、有人说可以用上传的文件的一些相关信息来命名,当然这种方法也还行,我觉得重名的概率跟第(2)种差不多;当然上面这些方法都会出现重名现象,那怎么办呢?我发现在C#里面有一个系统的唯一标识(Guid),这玩意儿挺好用。你就这样用就行了:Guid juid = Guid.NewGuid(); 上传到服务器的文件名称=juid.tostring()+"."+扩展名,这样就不会出现重名现象了;但是有些人就想问,我读出来的时候应该怎么去知道原来这个文件的名称呢?这个好说,你在存文件相关信息到数据库时注意加上它的文件名就OK了;
创建文件夹:这是我们上传文件时必须做的,当然也要判断所要创建的文件夹是否已经存在,存在就不用再创建了。
string UserDirectory = "Document_file";//所要创建文件夹的名字
string UserPath = Server.MapPath("../" + UserDirectory).ToString();
if (!System.IO.Directory.Exists(UserPath)) //如果文件夹不存在则创建
{
System.IO.Directory.CreateDirectory(UserPath);
}
其实我做完了才发现真的挺简单的,再说一下关于GUID:
1:什么是GUID
GUID代表全球唯一识别符。一个 GUID是一个128位的数字。
通常用一个32位的十六进制字符串来表示,就象这样:ddb58758-1e9d-48cd-900c-063b79015eb60
两个GUID相等的几率是 1/2128 ,几乎为0。
由于它们的唯一性,GUID可以被用在需要唯一关键字的应用程序中
2:在C#中创建GUID
string juid = System.Guid.NewGuid().ToString();
Response.Write(juid);
获得扩展名的方法可以直接用,System.IO.Path.GetExtension(filename)
aaa.jpg ==> .jpg