C# save files to folder on server instead of local

2019-01-15 09:32发布

The project is an MVC 4 C# based web application.

I'm currently working locally and would like to have the ability to upload a file to my locally running application in debug mode and have the file saved to the web server instead of the my local folder.

Currently we are using:

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

How can we leverage this code to save to a webserver directly. Is that even possible?

Right now the file gets saved to my local path and the path is stored in the database, we then have to upload the files to the webserver manually.

1条回答
beautiful°
2楼-- · 2019-01-15 09:47

The SaveAs function takes a filename and will save the file to any path you give it, providing the following conditions are met:

  • You local machine can access the filepath
  • Your local account has the correct privileges to write to the filepath

I would suggest you have a web.config setting that can be checked when running your code. Then you can decide if to use Server.MapPath or an absolute path instead.

For example, in "debug" more (running locally) you might have the following settings:

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

and in "live" mode:

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

Then your code may look something like this:

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 );
}
查看更多
登录 后发表回答