【问题标题】:C# save files to folder on server instead of localC#将文件保存到服务器上的文件夹而不是本地
【发布时间】:2013-07-24 05:14:29
【问题描述】:

该项目是一个基于 MVC 4 C# 的 Web 应用程序。

我目前在本地工作,希望能够以调试模式将文件上传到本地运行的应用程序,并将文件保存到网络服务器而不是我的本地文件夹。

目前我们正在使用:

if (!System.IO.File.Exists(Server.MapPath(PicturePath)))
{
     file.SaveAs(Server.MapPath(PicturePath));
}

我们如何利用此代码直接保存到网络服务器。这可能吗?

现在文件保存到我的本地路径并且路径存储在数据库中,然后我们必须手动将文件上传到网络服务器。

【问题讨论】:

  • 为什么不将您的应用部署到网络服务器?
  • 为了清楚起见,您想在本地运行您的应用程序,但将图像保存到您的网络服务器?为什么不将图像保存到网络服务器上的共享文件夹中?
  • 因为我在本地环境中进行调试,并在部署应用程序之前解决了所有错误。

标签: c# asp.net-mvc-4 file-upload


【解决方案1】:

SaveAs 函数采用文件名并将文件保存到您提供的任何路径,前提是满足以下条件:

  • 您的本地计算机可以访问文件路径
  • 您的本地帐户具有写入文件路径的正确权限

我建议你有一个 web.config 设置,可以在运行你的代码时检查。然后您可以决定是使用Server.MapPath 还是使用绝对路径。

例如,在“调试”模式(本地运行)下,您可能有以下设置:

<appSettings>
    <add key="RunningLocal" value="true" />
    <add key="ServerFilePath" value="\\\\MyServer\\SomePath\\" />
</appSettings>

在“实时”模式下:

<appSettings>
    <add key="RunningLocal" value="false" />
    <add key="ServerFilePath" value="NOT USED" />
</appSettings>

那么你的代码可能看起来像这样:

bool runningLocal = GetFromConfig();
bool serverFilePath = GetFromConfig();
string filePath;

if(runningLocal)
    filePath = serverFilePath;
else
    filePath = Server.MapPath(PicturePath);

if (!System.IO.File.Exists(filePath ))
{
     file.SaveAs(filePath );
}

【讨论】:

  • 因此,如果我使用从本地到网络服务器的直接文件路径,只要我在本地的帐户具有对该目录的写入权限,我就应该能够将其直接保存到该位置?
  • @RobCarroll:正确。请记住,如果您使用 IIS 在本地运行,则需要访问 IIS 中使用的用户帐户
  • 感谢您的帮助,这正是我想要的。
  • 如果我包含命名空间或其他任何内容,GetFromConfig() 对我不起作用
  • @Fadi:GetFromConfig() 只是一个组成函数,表示您应该从配置文件(或您想要存储它们的任何其他位置)获取路径
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
相关资源
最近更新 更多