如何将文件从网络服务器下载到桌面
本文关键字:服务器 下载 桌面 网络服务 网络 文件 | 更新日期: 2023-09-27 18:24:15
我已经在互联网上搜索了3个小时,寻找解决我问题的方法,我开始怀疑是否有其他人遇到过这个问题?
我正在使用IIS7来托管一个网站,该网站在我们的办公室周围做一些当地的事情。好吧,开发这个网站一切都很好,但现在我正在主持这个网站,我不能(其他人也不能)点击链接下载所需的文件。(让我们假装他们点击链接从网络服务器下载一些随机文件)
嗯,它下载文件失败了,我可以猜测这是一个权限错误。我一直在寻找解决方案,但似乎找不到。我对IIS7知之甚少,所以我对应用程序池标识的内容了解不多,尽管我确实设法授予了该标识对文件/文件夹的完全访问权限。不管怎样,这是它正在搞砸的特定区域。
这是default.cshtml页面的一部分,它从.cs文件中调用函数://嗯。。非常接近确切的事情,刚刚摆脱了一堆不必要的垃圾
@{
string tmp = Functions.downloadFile(fileName)
}
<html>
tmp
</html>
这是.cs文件中实际将文件下载到桌面的部分
public static string downloadFile(string fileName) //i know this example doesnt
//use filename, but the original code does.
{
if (Directory.Exists("C:'WebSite'thingsToDownload"))
{
string[] files = Directory.GetFiles("C:'WebSite'thingsToDownload");
foreach (string s in files)
{
string[] tmp = s.Split('''');
try
{
File.Copy(s,
Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
+ "''" + tmp[tmp.Length - 1]);
}
catch (Exception e)
{
return "ERROR COPYING: " + e.Message;
}
}
return "GOOD";
}
return "DIRECTORY DOESNT EXIST";
}
说了这么多,做了这么多之后,我得到"错误复制:访问路径'''fileName'被拒绝。
我的猜测是,网络服务器无法访问此人的桌面以便将文件放在那里。如果有人能提供一些线索并帮助我获得这一点,我将不胜感激!
如果您想通过单击链接下载文件,您应该使用response。
例如,当用户单击链接或按钮时,可以使用以下示例:
const string fName = @"C:'picture.bmp";
FileInfo fi = new FileInfo(fName);
long sz = fi.Length;
Response.ClearContent();
Response.ContentType = Path.GetExtension(fName);
Response.AddHeader("Content-Disposition", string.Format("attachment; filename = {0}",System.IO.Path.GetFileName(fName)));
Response.AddHeader("Content-Length", sz.ToString("F0"));
Response.TransmitFile(fName);
Response.End();
当您开发它时,它就起作用了,因为它在您的计算机上运行,因此可以访问您的桌面。没有下载到桌面这样的东西。您可以提供文件,并让用户决定将文件保存在哪里;在桌面或其他地方。但是,您必须通过http来执行此操作,而不是直接从服务器执行此操作。