作的时候用的是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();
}
}

上传就没了,做完了.

C# C/S WPF 远程操作服务器上面的文件的更多相关文章

  1. context.getResourceAsStream获取的是部署在服务器上面的文件位置 而不是我们本地的工程位置 意思是说获取的都是web下面的文件位置

    context.getResourceAsStream获取的是部署在服务器上面的文件位置 而不是我们本地的工程位置 意思是说获取的都是web下面的文件位置

  2. Sublime Text编辑远程Linux服务器上的文件

    sublime有个叫sftp的插件,可以通过它直接打开远程机器上的文件进行编辑,并在保存后直接同步到远程linux服务器上. 用Package Control安装插件 按下Ctrl+Shift+P调出 ...

  3. 使用PhpStrom等IDE编辑 远程linux服务器上的文件 实时更新

    习惯了在linux上 vim进行PHP的开发,突然忘了IDE的感觉,所以想到了.通过PhpStrom等IDE直接编辑 samba共享到 mac或者windows本地的磁盘进行编辑. 为了忘却的纪念,有 ...

  4. 通过SecureCRT下载远程Linux服务器上的文件到本地Windows

    sz  文件名[先cd到需要下载的文件的目录层] [root@is13084905-0233 bookinterface]# sz test.txt rz Starting zmodem transf ...

  5. sublime中编辑服务器上的文件

    背景:公司项目需要进行构建编译,在服务器上速度比较快,所以需要将sublime和linux中的文件相关联. 参考资料:http://zyan.cc/samba_linux_windows/ 主要有两步 ...

  6. paramiko模块(远程操作服务器)

    paramiko模块(远程操作服务器) django+paramkio实现远程某些服务器执行命令+上传文件 用于帮助开发者通过代码远程连接服务器,并对服务器进行操作. pip3 install par ...

  7. vscode实现远程linux服务器上Python开发

      最近需要训练一个生成对抗网络模型,然后开发接口,不得不在一台有显卡的远程linux服务器上进行,所以,趁着这个机会研究了下怎么使用vscode来进行远程开发.   1 配置免密登录¶   (1)在 ...

  8. xshell终端向远程服务器上传文件方法

    centos-7下在本地终端里向远程服务器上传文件,在命令行中执行的软件. 安装命令如下: 在终端里输入如下命令: 会弹出如下窗口 选择你要上传的文件即可上传成功.

  9. Linux下不借助工具实现远程linux服务器上传下载文件

    # Linux下不借助工具实现远程linux服务器上传下载文件 ## 简介 - Linux下自带ssh工具,可以实现远程Linux服务器的功能- Linux下自带scp工具,可以实现文件传输功能 ## ...

随机推荐

  1. 设计前沿:25款精妙的 iOS 应用程序图标

    在这篇文章中,我为大家精心挑选的25款巧妙设计的 iOS 应用程序图标,会激发你未来的工作.苹果的产品总是让人爱不释手,设计精美,对用户使用体验把握得淋漓尽致,iPhone.iPad.iPod和 iM ...

  2. [python]python元类

    这两天在看Django框架,里面的filter实现原理搞不明白,最后发现跟python的元类有关系. 原文:http://stackoverflow.com/questions/100003/what ...

  3. 微软IIS对http keep-alive的“霸道”处理

    大家都知道在IIS中有个HTTP keep-alive设置,见下图: 很多人可能和我们一样,以为这样设置后,IIS会就在发送响应内容时加上这个http header——Connection: keep ...

  4. [新手学Java]使用内省(Introspector)操作JavaBean属性

    获取类bean中的所有属性: @Test //获取类bean中的所有属性 public void test1() throws Exception{ BeanInfo info = Introspec ...

  5. 如何用c语言调用c++做成的动态链接库

    今天在做东西的时候遇到一个问题,就是如何在C语言中调用C++做的动态链接库so文件如果你有一个c++做的动态链接库.so文件,而你只有一些相关类的声明, 那么你如何用c调用呢,别着急,本文通过一个小小 ...

  6. AC自动机---病毒侵袭

    HDU 2896 题目网址: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110773#problem/B Description 当太 ...

  7. Delphi又要换东家了

    前几天听到这个消息,搞个FMX出来,64位还没搞清楚,又开始折腾了!http://www.deltics.co.nz/blog/posts/2371 No Seriously – Let’s Buy ...

  8. Oracle 中 call 和 exec的区别

    今天发现了一个小东西,觉得很有意思,查找了一些资料,跟大家分享一下: 在sqlplus中: 在第三方提供的工具(如:plsqldev) 总结: exec是sqlplus的命令,只能在sqlplus中使 ...

  9. jquery.ajax error调试

    $(document).ready(function() { jQuery("#clearCac").click(function() { jQuery.ajax({ url: u ...

  10. H5调用Android播放视频

    webView.loadUrl("http://10.0.2.2:8080/assets/RealNetJSCallJavaActivity.htm"); js调用的Java文件中 ...