在一台服务器上登陆,但还不能确定局域网里的服务器是否存在要下载的文件。具体方法:设置共享,在已经登陆的机器上设置好用户名密码,就可以下载了。如果不用net share,会提示用户名密码错误,之所以用net share,是因为windows 的File.Exists 不支持局域网判断文件是否存在,登陆后,就可以判断了。
Process prc = new Process();
prc.StartInfo.FileName = @"cmd.exe";
prc.StartInfo.UseShellExecute = false;
prc.StartInfo.RedirectStandardInput = true;
prc.StartInfo.RedirectStandardOutput = true;
prc.StartInfo.RedirectStandardError = true;
prc.StartInfo.CreateNoWindow = false;
prc.Start();
string cmd = @"net use \\***** ""*****"" /user:""*****""";
prc.StandardInput.WriteLine(cmd);
string filePath = @"\\*****" + @lbtnAttachment.CommandArgument;//路径
if (!File.Exists(filePath))
{
prc.StandardInput.WriteLine(@"net use \\***** ""*****"" /user:""*****""");
filePath = @"\\*****" + @lbtnAttachment.CommandArgument;
}
prc.StandardInput.Close();
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
if (fs == null)
return;
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(lbtnAttachment.Text, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();