【问题标题】:Upload file to server .Net将文件上传到服务器.Net
【发布时间】:2015-06-27 23:02:56
【问题描述】:

我正在使用 C# .net,我正在尝试将文件上传到我的服务器。我没有使用 asp .net。

我关注了This Question,但它似乎对我不起作用。顺便说一句,这个问题是在 2008 年写的。

我正在使用这个代码,如上面的问题所示:

File.Copy("zQn69PZUx.png", "\\\\198.57.247.152\\~shiro\\public_html\\new");
//tried this also
File.Copy("zQn69PZUx.png", "\\\\198.57.247.152\\~shiro\\new");

我得到的错误:

An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll
Additional information: The network path was not found.

我也尝试使用我的域名并使用浏览器中显示的路径,没有http://,因为它抱怨格式,说它不被接受,就像这样:domain-name.com\\new,但仍然得到相同结果出错。

任何想法我可能做错了什么,或者对如何将文件上传到服务器有更好的解决方案?在这里可以看到http://198.57.247.152/~shiro/new/路径存在。

【问题讨论】:

  • 198.57.247.152 是您本地网络中的计算机还是您只能远程访问它?
  • @PeterLuu 这是我从一家名为 hostgator 的公司租用的共享服务器。这就是为什么~shiro 子文件夹仅供我个人使用
  • @Sayka sample 是什么意思?这是一个有效的链接198.57.247.152/~shiro/new 在浏览器上工作
  • 您是否从主机控制面板设置了 FTP?
  • 如果它是来自公司的共享服务器,您是否拥有该服务器可用的 FTP 凭据?

标签: c# winforms


【解决方案1】:

路径 \\198.57.247.152\~shiro\new 是 Microsoft 所称的 Uniform Naming Convention (UNC)。此类资源仅在启用了 NetBIOS 的网络上可用;本质上是本地网络。问题是 File.Copy 仅在您可以在网络中访问它时才有效 - 因为这是一个远程服务器,它将无法找到该服务器,从而导致 The network path was not found 异常。

http://198.57.247.152/~shiro/new/ 遵循<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ] 的语法,即调用Uniform resource locator (URL)Hypertext Transfer Protocol (http) 资源通常由浏览器访问。

您可以改为使用 FTP 将文件上传到服务器来解决此问题:

using (WebClient client = new WebClient())
{
     client.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
     client.UploadFile("ftp://ftpserver.com/targetpath", "localfilepath");
}

有效的目标路径类似于:ftp://localhost/samplefile.txt 并且本地文件路径应该是完全限定的文件路径。

【讨论】:

  • 是的 - 我不确定您的 ftp 地址是否与 198.57.247.152 地址相同,所以我使用了占位符。
  • 这似乎在起作用,有点。我收到此错误:the remote server returned an error: (553) File name not allowed. 我现在正在联系我的服务器托管公司以查看问题所在。感谢您的回答
  • 看看这个,如果它对你有帮助stackoverflow.com/questions/9418404/…
  • 是的,路径必须有一些东西。问题是我不知道实际路径,因为我无权访问所有目录,因为它是共享服务器。希望我能通过询问他们来解决这个问题。
  • 好吧,问题是它最后也需要文件名! (例如something.png)
【解决方案2】:

您可以使用 Peter Luu 回答中的代码上传文件。但首先你应该可以访问它。

要将文件上传到远程服务器,您应该是它的用户并且应该有密码。这不是您用于登录 Hostgator 控制面板的密码。登录您的 Hostgator 帐户后,其中会有一个类似 FTP 的选项,您可以在其中设置 FTP 用户帐户。在那里您可以分配用户名和密码,并且必须将其应用于上传代码..

为了检查用户名和密码是否有效,打开我的电脑,在地址栏中输入 FTP 路径(将以“ftp://”开头)。弹出一个对话框,询问用户名和密码(如果路径有效)。如果您从那里进入,查看并复制文件到资源管理器窗口,那么上传代码将起作用

如果您想获取适用的路径,请打开 Windows 资源管理器并输入 ftp://your_domain_name。应用用户名和密码,浏览您需要的路径,从地址栏中复制并添加到代码中。

【讨论】:

  • 该帐户确实有效,因为如果我输入错误的密码/用户名,我会在 VS2013 中得到不同的错误
  • 是的,我在 1 秒前就发现了问题!它最后需要文件名以及 ServerFilePathLocation !
  • @dimitrisdimitris,如果你想得到适用的路径,打开windows资源管理器并输入your_domain_name应用用户名和密码,浏览你需要的路径,从地址栏复制并添加到代码。
  • @dimitrisdimitris 在 ftp:// 到您的域名之前
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多