您的位置:首页 > 其它

通过用户密码获取共享文件

2014-10-17 11:55 211 查看
  最近接到一个新的项目,不通过http、ftp下载文件;通过获取共享文件,直接将文件拷贝到本地;方法如下:

利用iis服务器获取,iis上的文件,调用方法如下

WebClient wc = new WebClient();
//url下载的web地址
//fileName 目标路径
wc.DownloadFile(url, fileName);


  

通过共享文件夹,获取共享文件,需解决以下问题:

如何通过用户、和密码访问远程服务器文件夹

如何将访问到的共享文件上,下载文件

如何将下载的本地路径以对话框的形式展现给用户,便于灵活选择目标地址

如何将选择本地对话框路径的文件名,默认为下载文件的文件名

步骤如下

新建form,添加三个标签、文本 ;分别是ip、用户、密码;一个下载按钮

在btton_Click事件添加如下代码

try
{
GetAccessControl(textBox3.Text, textBox1.Text, textBox2.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

SaveFileDialog save = new SaveFileDialog();

//服务器共享文件夹下载地址
string frompath = @"\\192.168.50.180\aaa\MyEclipseGen.java";

//设置文件名
save.FileName = frompath.Substring(frompath.LastIndexOf("\\") + 1);

if (save.ShowDialog() == DialogResult.OK)
{
CopyFile(frompath, save.FileName);
}


/// <summary>
/// 连接共享服务器
/// </summary>
/// <param name="path">ip地址</param>
/// <param name="user">用户名</param>
/// <param name="pwd">密码</param>
void GetAccessControl(string path, string user, string pwd)
{
Process p = new Process();

p.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec");

p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;

p.Start();
p.StandardInput.WriteLine(@"Net Use \\{0} /del", path); //必须先删除,否则报错
p.StandardInput.WriteLine(@"Net Use \\{0} ""{1}"" /user:{2}", path, pwd, user);
p.StandardInput.WriteLine("exit"); //如果不加这句WaitForExit会卡住

p.WaitForExit();
p.Close();
}

/// <summary>
/// 拷贝文件
/// </summary>
/// <param name="frompath"></param>
/// <param name="topath"></param>
void CopyFile(string frompath, string topath)
{
try
{
File.Copy(frompath, topath, true);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐