【问题标题】:How to upload files to a different port on the network?如何将文件上传到网络上的不同端口?
【发布时间】:2021-09-15 02:12:40
【问题描述】:

有一个 IP 为192.168.0.36 的端口。这是一个服务器,它将存储上传到 Web 应用程序的文件,但这是我第一次尝试做类似的事情,所以我尝试了很多方法来将文件存储在该服务器中,但是当它发送文件时应用程序产生了以下错误:

WebClient 请求期间的异常

所以我打开了 Visual Studio 错误菜单以了解更多信息,并且有一条消息说:

InnerException = {"找不到文件'C:\Program Files (x86)\IIS Express\download.png'。":"C:\Program Files (x86)\IIS Express\download.png" }

如果我不访问分区C为什么会产生这个错误:

这是我的代码:

<asp:FileUpload runat="server" ID="file_foto" CssClass="file-foto-pf" Style="display: none;" accept="image/*" />

protected void actualizar_foto(object sender, EventArgs e)
{
    try
    {
        if (file_foto.HasFile)
        {
            string Id_Usuario = Request.QueryString["Id_Usuario"].ToString();
            string serverName = @"\\192.168.0.36\\E:\\INTRANET\\";
            string folder = "PRUE\\";
            string fileName = Path.GetFileName(file_foto.FileName)
            // Upload to Hosted Server.
            WebClient webClient = new WebClient();
            Uri uri = new Uri(serverName + folder + fileName);
            webClient.UploadFile(uri, "POST", fileName)
            DCL.Int_Usuarios obj = new DCL.Int_Usuarios();
            obj.Anexo_Foto = uri.ToString();
            obj.Id_Usuario = Convert.ToInt32(Id_Usuario);
            Int_Usuarios_BRL.InsertOrUpdate(obj, 45);
        }
        Page.Response.Redirect(Page.Request.Url.ToString(), true);
    }
    catch (Exception ex)
    {
        Console.Write(ex);
    }
}

【问题讨论】:

  • 您的服务器与网站 - 后面的代码是否直接使用其他服务器上的文件夹?您不能在 file:// 中进行测试类型 - 因为这对您的浏览器来说意味着您正在使用本地文件 - 而不是来自 Web 服务器。如果用户将文件上传到 Web 服务器,那么您可以使用平面 jane windows 文件路径而不是 url 路径在您的代码中执行另存为。
  • 我的文件保存在不同的服务器上
  • 您是否使用 FTP 或 https 或其他方式保存到该其他服务器,或者当前运行的网站是否具有文件系统的直接权限和使用权?这意味着当前网站和 URL 不匹配也不映射到第二台服务器,但您可以执行以下两项操作之一;创建虚拟文件夹以映射到该服务器(这意味着存在第二台服务器上文件夹的有效 URL)。或者使用后面的代码来保存,并将给定的文件拉/蒸给最终用户。第二个选择更安全,因为文件的有效 URL 永远不会作为 url 存在,但只有后面的代码可以使用 - 这通常很好
  • 我在说什么?通常,网站需要一些巨大的文档文件夹等,并且它们与 Web 服务器不在同一个文件夹中。因此,您可以映射 + 创建一个虚拟文件夹并将其指向另一台服务器。这样,基础文件夹的 URL 现在就可以工作了。当然,如果两台服务器位于同一网络上,您只能创建这些虚拟文件夹。但这就是您将文档和文件夹共享到网站的方式。这意味着您不必将所有这些文件、图片和文档文件夹放在实际的 Web 服务器上。这也意味着现在有效 URL 的 eixst。
  • 使用 IIS express 版本设置虚拟文件夹是一件非常痛苦的事情。有了完整的附加功能,它是从 UI 内置的。从 IIS 服务只需打开文件夹树,右键单击根文件夹,您会看到创建/添加虚拟文件夹。对于 IIs EXPRESS?您必须编辑 Web 配置文件,因为我们没有漂亮的 IIS(互联网服务)用户界面,这使得这样做非常容易。

标签: c# asp.net .net webforms


【解决方案1】:

虽然我不确定这是否是问题所在,但您可以执行以下操作:

string serverName = @"file://192.168.0.36/E:/INTRANET/PRUE/";
string fileName = Path.GetFileName(file_foto.FileName);
Uri uri = new Uri(Path.Combine(serverName, fileName));

如果这对你有帮助,请告诉我。

【讨论】:

  • 您能尝试记录所有与路径相关的值吗?可能创建的 uri 包含相对路径或 IIS 根路径。
  • 如果我要保存的文件将来自 IIS 的根路径,这就是为什么因为要存储它的 IP
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 2011-01-06
  • 2011-02-05
  • 2012-12-30
  • 2011-01-18
相关资源
最近更新 更多