【问题标题】:I need to upload and read image files to folder that is not part of my project folder Asp.NET MVC 5. My site is hosting in IIS server. Any idea?我需要将图像文件上传和读取到不属于我的项目文件夹 Asp.NET MVC 5 的文件夹中。我的站点托管在 IIS 服务器中。任何想法?
【发布时间】:2023-03-14 18:10:01
【问题描述】:

我需要将图像文件上传和读取到不属于我的项目文件夹的文件夹。我的网站托管在 IIS 服务器中。我已经将文件保存在我的项目文件夹中。没有问题。但我需要将其更改为外部文件夹。我怎样才能做到这一点?我正在使用 .NET 4.5.2。

这是我现在用的

            string filename = Path.GetFileName(objdata.image.FileName);
                string imagepath = Path.Combine(Server.MapPath("~/SupplierImages/"), filename);

                if (System.IO.File.Exists(imagepath))
                {
                    System.IO.File.Delete(imagepath);
                }

                objdata.image.SaveAs(imagepath);

【问题讨论】:

  • 当您尝试将文件保存到另一个文件夹时会发生什么?这会以任何方式失败吗?
  • 使用这种方法,如果文件夹在我的项目根目录中,我可以保存和读取文件。但我需要把它拿到外面。 'Server.MapPath' 不适用于外部路径。
  • 嗯,是的,因为Server.MapPath 是将Web 项目内部 的相对路径映射到它们相应的文件系统路径。当您只使用要保存文件的实际文件系统路径时会发生什么?
  • 我收到此错误。我在 IIS 根目录中创建了新文件夹。然后尝试将文件保存在其中。 'C:/inetpub/wwwroot/SupplierImages/' 是物理路径,但应该是虚拟路径。
  • 具体是什么引发了该错误?这听起来像是Server.MapPath 会抛出的东西,但你不应该使用它。

标签: c# .net asp.net-mvc


【解决方案1】:

但我需要将其更改为外部文件夹。我该怎么做?

您可以通过将其更改为另一个文件夹来将其更改为另一个文件夹:

string imagepath = Path.Combine(@"C:\Whatever\folder\you\want", filename);

【讨论】:

  • 这是 Stack Overflow 上有史以来最好的答案。
  • 是的,先生。但是如何用这种方式检查文件是否存在? System.IO.File.Exists() 接受这个路径检查吗?
  • @Darshana:您可以通过使用System.IO.File.Exists() 并将文件的路径传递给它来检查文件是否存在。您尝试过吗?
  • 是的,先生。但它返回错误。让我再试一次。
  • @Darshana:false 是预期的返回值。鼓励您check the documentation 了解它的含义。如果路径为 null、无效路径或零长度字符串,则如果文件不存在,它将返回 false。除非您对为什么 false 结果出乎意料有一些具体的指示,否则“它返回 [s] false”并不能真正描述问题。
猜你喜欢
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 2017-06-06
  • 2017-04-02
  • 2011-01-04
  • 2016-05-10
相关资源
最近更新 更多