我找到了许多人创建新文件并添加当前Datetime然后文件扩展名的示例,但我想要做的是查看文件当前是否存在以及是否只是将当前DateTime添加到文件中名称,但我无法弄清楚如何维护文件扩展名。到目前为止我的当前代码:
public class FileUploadHelper
{
private CoreSiteContext db = new CoreSiteContext();
public Int64 UploadSiteImage(string ContainerName, string NewFileName, HttpPostedFile UploadedFile)
{
string SavePath = @"F:\FFInfoImages\" + ContainerName + @"\";
if (System.IO.File.Exists(SavePath + NewFileName))
{
System.IO.File.Move(SavePath + NewFileName, SavePath + NewFileName + DateTime.Now.ToString("MM_dd_yyyy_hh_mm_ss"));
UploadedFile.SaveAs(SavePath + NewFileName);
}
else
{
UploadedFile.SaveAs(SavePath + NewFileName);
}
using (db)
{
File NewFile = new File()
{
FileName = NewFileName,
ContentType = UploadedFile.ContentType
};
db.Files.Add(NewFile);
db.SaveChanges();
return NewFile.ID;
}
}
}
答案 0 :(得分:4)
看起来好像NewFileName字符串变量没有传入文件扩展名,否则大部分都应该有效。为什么不从UploadedFile获取扩展名?
string strNewPath = SavePath + NewFileName + Path.GetExtension(UploadedFile.FileName);
if (System.IO.File.Exists(strNewPath)) {
System.IO.File.Move(strNewPath, SavePath + NewFileName + DateTime.Now.ToString("MM_dd_yyyy_hh_mm_ss") + Path.GetExtension(UploadedFile.FileName));
UploadedFile.SaveAs(strNewPath);
}
else {
UploadedFile.SaveAs(strNewPath);
}
using (db) {
File NewFile = new File() {
FileName = NewFileName + Path.GetExtension(UploadedFile.FileName),
ContentType = UploadedFile.ContentType
};
db.Files.Add(NewFile);
db.SaveChanges();
return NewFile.ID;
}
答案 1 :(得分:3)
.NET具有内置方法,可以安全地提取文件名的不同部分(分别是文件名和扩展名)。 Path
名称空间中存在System.IO
。
假设NewFileName
类似于myfilename.txt
,您可以像这样使用它(未经测试):
if (File.Exists(SavePath + NewFileName))
{
var name = Path.GetFileNameWithoutExtension(NewFileName);
var ext = Path.GetExtension(NewFileName);
File.Move(SavePath + NewFileName,
SavePath + name + DateTime.Now.ToString("MM_dd_yyyy_hh_mm_ss") + ext);
}
UploadedFile.SaveAs(SavePath + NewFileName);
答案 2 :(得分:2)
以下方法完全解决了您的问题
System.IO.Path.GetExtension("Path");
最好先使用System.IO.Path.GetFileNameWithoutExtension("Path")
获取当前没有扩展名的文件名,然后添加日期时间,然后再添加扩展名。
答案 3 :(得分:1)
您可以使用Path.GetExtension()
方法来识别文件扩展名。
试试这个:
String strExtension=IO.Path.GetExtension(SavePath + NewFileName);
if (System.IO.File.Exists(SavePath + NewFileName))
{
System.IO.File.Move(SavePath + NewFileName, SavePath + NewFileName + DateTime.Now.ToString("MM_dd_yyyy_hh_mm_ss")+strExtension);
UploadedFile.SaveAs(SavePath + NewFileName);
}
else
{
UploadedFile.SaveAs(SavePath + NewFileName);
}