如何在FileUpload控件Asp.net中重命名文件?

时间:2014-04-13 07:51:16

标签: c# asp.net

我带有上传图像的方法,我需要将其重命名为我的应用程序中具有固定名称但是当使用File.Copy方法时,它返回结果(文件不存在) 我不知道那是怎么回事。

我试过这个File.Copy(UploadFile.FileName,newFilName); 也没有回应

 string filename = Path.GetFileName(FileUpload.FileName);
                string extension = Path.GetExtension(FileUpload.PostedFile.FileName);

                string oldFileName = FileUpload.FileName;
                string newFileName = ("aboutusImage" + extension);

                File.Copy(oldFileName, newFileName);
                File.Delete(oldFileName);

                File.Move(FileUpload.FileName, newFileName);
                FileUpload.SaveAs(Server.MapPath("~/Styles/aboutusImages/") + newFileName);

                var updateAboutus = (from a in dbContext.DynamicText
                                     where a.Id == 1
                                     select a).Single();
                updateAboutus.Id = updateAboutus.Id;
                updateAboutus.Name = updateAboutus.Name;
                updateAboutus.Image = Path.Combine("~/Styles/aboutusImages/", "aboutusImage.jpg");

                dbContext.SaveChanges();

2 个答案:

答案 0 :(得分:2)

FileUpload.FileName属性表示客户端计算机上的文件名,而不是服务器上的文件名。 尝试使用File.Copy几乎没有成功的可能性,除非你在当前文件夹中的自己的服务器中有相同的文件。

来自MSDN example

protected void UploadButton_Click(object sender, EventArgs e)
{
    // Specify the path on the server to
    // save the uploaded file to.
    String savePath = @"c:\temp\uploads\";

    // Before attempting to perform operations
    // on the file, verify that the FileUpload 
    // control contains a file.
    if (FileUpload1.HasFile)
    {

      String fileName = FileUpload1.FileName;

      // Append the name of the file to upload to the path.
      savePath += fileName;


      // Call the SaveAs method to save the 
      // uploaded file to the specified path.
      // This example does not perform all
      // the necessary error checking.               
      // If a file with the same name
      // already exists in the specified path,  
      // the uploaded file overwrites it.
      FileUpload1.SaveAs(savePath);

当然,以下File.Delete,File.Move有同样的问题,应该删除

答案 1 :(得分:1)

您尝试移动的名称只是客户端上给出的名称,而不是服务器上的当前名称。它可能位于服务器上的某个临时位置。

您可能需要FileUpload.SaveAs功能。