7

I have deployed my project to Azure. In my project I have "App_Data\Images" folder.

Now I'm trying to do the following:

String filename = GLOBAL_IMAGES_VALS.GET_FILE_PREFIX(imageType) + "-" + User.Identity.GetUserId<int>().ToString() + Path.GetExtension(image.FileName);

String origPath = Server.MapPath("~\\App_Data")+"\\Images\\"  + filename;

But then upon trying:

image.SaveAs(origPath);

I get this error message:

Could not find a part of the path 'D:\home\site\wwwroot\App_Data\Images\logo-10003065.jpg'.

How can I save my file to "App_Data\Images\"?

4

7 回答 7

8

实际的问题是子文件夹“图像”不存在。我不记得为什么发布过程没有创建这个子文件夹,但是我手动添加了它,然后一切正常。

编辑:

正如其他人在这里写的(@Spectarion)。我将在这里放重要的注释来解释为什么没有创建该文件夹:

只是为了将来的读者,如果文件夹为空,则不会创建文件夹。即使有项目中未包含的文件,文件夹也是空的。

只需将一些“fake.txt”文件放入您要确保创建它的任何文件夹中,当然不要忘记将其添加到项目中。祝你好运。

于 2016-05-19T08:49:12.290 回答
3

由于您在特定文件夹中没有任何文件,因此在发布 Web 部署时会忽略空文件夹。

快速修复:在发布之前将任何文件添加到文件夹将解决此问题。

于 2016-11-01T18:31:03.593 回答
1
if (!Directory.Exists(Server.MapPath("~/Images")))
{                
      Directory.CreateDirectory(Server.MapPath("~/Images"));
}

文件夹中可能缺少该目录。创建目录并在文件路径中使用

于 2017-10-16T11:37:23.950 回答
0

也许图像文件夹不存在,您需要先创建它?虽然如果它是为上传图像的人设计的,我不建议在你的应用中保存图像。我会通过 blob 或新的 Azure 文件存储将它们保存在 Azure 存储中。我会保持与您的应用程序相关的应用程序部署文件干净,并将任何用户生成的内容保存在其中。

顺便说一句,如果您使用的是 Azure Web Apps,您可以使用“HOME”的环境变量来始终获取正确的路径(应该是 D:\home)

string path = Environment.GetEnvironmentVariable("HOME") +
                           "\\site\\wwwroot\\App_Data\\images"
于 2015-11-18T14:52:31.757 回答
0

我假设您的 AppData 文件夹就在 wwwroot 文件夹下,通常是这种情况。

尝试这个:

HttpContext.Current.Server.MapPath(Path.Combine("~/AppData/Images/", filename));
于 2015-11-20T10:31:04.357 回答
0

我刚刚在VS15上遇到了这个问题。为了生成您遇到的错误,我首先遵循了这个问题中的建议。我猜这部分是 dsb 的回答,但 dsb 没有给出修复这个问题的实际过程的任何描述。

然后我去https://<mywebsite>.scm.azurewebsites.net/DebugConsole查看目录,发现App_Data 没有发布

这就是抛出错误的原因。所以,我然后通过简单地转到解决方案资源管理器,右键单击App_Data并选择“发布 App_Data”来解决这个问题。

但是,我的网站是一个项目的短期学术努力——我认为考虑到上面的Matt Watsons关于允许用户上传到部署区域是否是个好主意的回答,可能有很多话要说

于 2016-12-17T20:28:11.867 回答
0

也许这个:

System.Web.Hosting.HostingEnvironment.MapPath("~\\App_Data")+"\\Images\\"  + filename )
于 2015-11-18T14:25:44.683 回答