C# 如何将图像上载到我的应用程序有权访问的任何web服务器(本地或远程)

C# 如何将图像上载到我的应用程序有权访问的任何web服务器(本地或远程),c#,asp.net-mvc,image-uploading,remote-server,C#,Asp.net Mvc,Image Uploading,Remote Server,我的第一个决定是将图像存储在数据库还是文件系统中,经过一些研究后,我选择了使用文件系统 随着图像的增加,我需要通过获取更多的web服务器来横向扩展,因此我需要将图像的网络/internet位置存储在某个位置,以便我可以访问它所在的任何web服务器 理论上我有我需要的东西,但我不知道如何获取文件并将其保存在远程服务器上。具体来说,最好的方法是什么?UNC路径是一个选项吗 为了清楚起见,我已经获得了图像服务器端,只需要将其发送/保存到我选择的任何web服务器。本地您可以。否则,您必须使用FTP上传它

我的第一个决定是将图像存储在数据库还是文件系统中,经过一些研究后,我选择了使用文件系统

随着图像的增加,我需要通过获取更多的web服务器来横向扩展,因此我需要将图像的网络/internet位置存储在某个位置,以便我可以访问它所在的任何web服务器

理论上我有我需要的东西,但我不知道如何获取文件并将其保存在远程服务器上。具体来说,最好的方法是什么?UNC路径是一个选项吗

为了清楚起见,我已经获得了图像服务器端,只需要将其发送/保存到我选择的任何web服务器。

本地您可以。否则,您必须使用FTP上传它们:

public void UpLoadFile(String serverFilePath, string localFilePath)
{
    String serverFullPath = "ftp://" + s_ServerHost + serverFilePath;
    FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(serverFullPath);
    ftp.Credentials = new NetworkCredential("user", "password");
    ftp.KeepAlive = true;
    ftp.Method = WebRequestMethods.Ftp.UploadFile;
    ftp.UseBinary = true;

    using (FileStream fs = File.OpenRead(localFilePath))
    {
        Byte[] buffer = new Byte[fs.Length];
        fs.Read(buffer, 0, buffer.Length);
    }

    using (Stream ftpStream = ftp.GetRequestStream())
        ftpStream.Write(buffer, 0, buffer.Length);
}
为了检索它,您必须知道服务器的IP/主机名以及文件的最终公共路径。

您可以在本地进行检索。否则,您必须使用FTP上传它们:

public void UpLoadFile(String serverFilePath, string localFilePath)
{
    String serverFullPath = "ftp://" + s_ServerHost + serverFilePath;
    FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(serverFullPath);
    ftp.Credentials = new NetworkCredential("user", "password");
    ftp.KeepAlive = true;
    ftp.Method = WebRequestMethods.Ftp.UploadFile;
    ftp.UseBinary = true;

    using (FileStream fs = File.OpenRead(localFilePath))
    {
        Byte[] buffer = new Byte[fs.Length];
        fs.Read(buffer, 0, buffer.Length);
    }

    using (Stream ftpStream = ftp.GetRequestStream())
        ftpStream.Write(buffer, 0, buffer.Length);
}

要检索它,您必须知道服务器的IP/主机名以及文件的最终公共路径。

谢谢您的回答。你所说的公共路径到底是什么意思?不仅仅是文件路径吗?或者它与远程服务器不同?另外,ftp是实际的方式吗?要获得上传的文件,您必须通过mydomain.com/path/file.ext。。。FTP是一个非常好的解决方案,但不是唯一的解决方案。例如,你可以使用SQL数据库或其他更难的方法。啊,我明白了,你指的是iis中的路径。是的,我最初打算通过数据库来做,我知道怎么做,但街上流传的消息是,文件系统是大多数大型网站使用的,而且数据库中的存储给数据库带来了不必要的负载,可以扩展到廉价的web服务器。谢谢你的回答。你所说的公共路径到底是什么意思?不仅仅是文件路径吗?或者它与远程服务器不同?另外,ftp是实际的方式吗?要获得上传的文件,您必须通过mydomain.com/path/file.ext。。。FTP是一个非常好的解决方案,但不是唯一的解决方案。例如,你可以使用SQL数据库或其他更难的方法。啊,我明白了,你指的是iis中的路径。是的,我最初打算通过数据库来做,我知道怎么做,但街上流传的是,文件系统是大多数大型网站使用的,而且数据库中的存储给数据库带来了不必要的负载,可以扩展到廉价的web服务器。