文件上传重命名问题....在线等.
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个应该也是一样的.