将FileUpload中的选定文件保存到服务器时如何更改文件扩展名

时间:2013-03-06 13:28:22

标签: c# winforms file-upload

string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/ProcessedFiles/" + fileName));

从FileUpload1抓取以保存在服务器上的文件是.xls文件(Excel 97-2003)

我想要的是在服务器上使用.xlsx扩展名(Excel 2007及更高版本)保存它。

3 个答案:

答案 0 :(得分:2)

使用Path.ChangeExtension

string path = "C:\\SomePath\\Somefile.xls";
string newPath = Path.ChangeExtension(path, ".xlsx");

在你的情况下,可能是这样的(未经测试):

string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
fileName = Server.MapPath(Path.Combine("~/ProcessedFiles/", fileName));
FileUpload1.PostedFile.SaveAs(Path.ChangeExtension(fileName, ".xlsx"));

答案 1 :(得分:0)

您可以检索没有原始扩展名的文件名,然后使用Path.GetFileNameWithoutExtension(String path)为其添加新的扩展名,如下所示:

String filename = Path.GetFileNameWithoutExtension(FileUpload1.PostedFile.FileName) + ".xlsx";
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/ProcessedFiles/" + filename));

第二个想法,我完全忘记了ChangeExtension(),正如@Matt建议的那样。你应该使用他的代码。

答案 2 :(得分:0)

您需要使用Path.GetFileNameWithoutExtension方法而不是Path.GetFileName

string fileName = Path.GetFileNameWithoutExtension(FileUpload1.PostedFile.FileName) + "xlsx";
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/ProcessedFiles/" + fileName));