日期:2014-05-18  浏览次数:20381 次

文件上传重命名问题....在线等.

string filename="";
if(fileupload1.hasfile)
{
string path=server.mappath("c:\\");
filename=datetime.now.tostrin("yyyyMMddHHmmssms");
path+=filename;

fileupload1.saveas(path);
}


if(fileupload2.hasfile)
{
string path=server.mappath("c:\\");
filename=datetime.now.tostrin("yyyyMMddHHmmssms");
path+=filename;

fileupload1.saveas(path);
}

.
.
.
我放了五个fileupload,如果一次同时上传的话.文件名都是相同的.如果中断单步执行的话会产生不同的文件名.

问题好像是我的机子太快了而在同一毫秒内执行的操作.可是想一想,上传文件也需要时间啊.


请问如何解决?
谢谢;

cpu:双核 3.2 内存:1G

------解决方案--------------------
使用guid
string filename=""; 
if(fileupload1.hasfile) 

string path=server.mappath("c:\\"); 
filename=datetime.now.tostrin("yyyyMMddHHmmssms"); 
path+=guid.new().tostring();
path+=filename; 


------解决方案--------------------
年月日时分秒后再加个随机数,很多论坛就是这么做的。
------解决方案--------------------
楼上正解
------解决方案--------------------
原因很可能出现在datetime.now上.因为缓存的原因,很有可能datetime.now在相近时间内取到的是一样的,这个很常见~
------解决方案--------------------
string fileName = System.IO.Path.GetExtension(fileExtension).ToString();
Random rd = new Random();
int valationNo = 10 + rd.Next(99);
fileName = System.DateTime.Now.ToString("MMddhhmmss") + valationNo.ToString() + fileName;
string newPath = "../FlashFiles/";
this.FileUpload1.SaveAs(System.Web.HttpContext.Current.Request.MapPath(newPath) + fileName);

DateTime.Now+随机

我同时上传 两 个没问题,5个应该也是一样的.