zoukankan      html  css  js  c++  java
  • C# C/S WPF 远程操作服务器上面的文件

    作的时候用的是WPF,需要做一个上传附件的功能,服务器上有一个文件夹,附件都上传到里面,只知道URL路径.

    文件夹是在服务器上的IIS里面(就比如说你发布一个网站,把文件夹建在网站下面,当然这个网站啥都没有,你需要的是这个文件夹在这个网站下面的路径,既url路径)

    打开窗口选择文件:

    if (open.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
    foreach (string f in open.FileNames)
    {
    list.Add(new FileInfo(f));
    }
    }

    把路径加到list里面

    上传附件:

    这块需要注意如果你的文件非常大的话就需要把流分开上传了

    try
    {
    WebClient wc = new WebClient();
    wc.Credentials = new NetworkCredential("zhangsan", "123456");
    FileStream fs = new FileStream(oldPath, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(fs);
    byte[] result = br.ReadBytes(Convert.ToInt32(fs.Length));
    Stream s = wc.OpenWrite(new Uri(path), "PUT");
    if (s.CanWrite)
    {
    s.Write(result, 0, result.Length);
    }
    s.Flush();
    s.Close();
    fs.Close();
    }
    catch (Exception)
    {
    return false;
    }

    这个oldPath是你在本地选中的文件的路径,path是你要上传到服务器上的路径,包括你上传的文件的名字,比如http://202.202.1.299:80/Up/aaa.jpg

    zhangsan是你在服务器上的一个账号的名称,123465是密码,你需要给这个账号读写的权限,并且需要给WebDAV创建一个规则,如图

    而且记得把你存放上传文件的文件夹的读写权限给你的这个账号,如图

    判断文件夹是否存在

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(filename);
    request.Credentials = new NetworkCredential("zhangsan", "123456");
    request.Method = "PROPFIND";
    request.Headers.Add("Depth", "0");
    request.Headers.Add("Translate: f");
    WebResponse response = null;
    try
    {
    response = request.GetResponse();
    }
    catch (WebException exception)
    {
    if (exception.Message.IndexOf("404") != -1)
    {
    return false;
    }
    throw exception;
    }
    finally
    {
    if (response != null)
    {
    response.Close();
    }
    }

    如果没有,那就创建文件夹

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(foldername);
    request.Credentials = new NetworkCredential("zhangsan", "123456");
    request.Method = "MKCOL";
    WebResponse response = null;
    try
    {
    response = request.GetResponse();
    }
    catch (WebException exception)
    {
    return false;
    }
    finally
    {
    if (response != null)
    {
    response.Close();
    }
    }

    上传就没了,做完了.

  • 相关阅读:
    IE7下图片缩放失真可用-Ms-Interpolation-Mode解决
    Chrome 设置12px以下的字体-好像新版已经不支持了
    豆瓣底部的点排版
    认识伪类元素:before和:after
    CSS3 Media Queries
    CSS3 为不同媒介设置样式的方法(CSS3 Media Queries)(转)
    CSS3 Transform的perspective属性
    CSS3 Animation Keyframes关键帧
    .Net 逆向 Reflector之reflexil使用
    内网穿透(NAT),太牛...
  • 原文地址:https://www.cnblogs.com/lijin/p/3415462.html
Copyright © 2011-2022 走看看