C# winform把本地文件上传到服务器上,和从服务器上下载文件

昨天在做项目过程中遇到需要把本地文件上传到服务器上的问题,在这里记录一下,方便大家互相学习!

/// <summary>

/// 上传文件方法
/// </summary>
/// <param
name="filePath">本地文件所在路径(包括文件)</param>
/// <param
name="serverPath">文件存储服务器路径(包括文件)</param>
public void
UploadFile(string filePath, string serverPath)

{
  //创建WebClient实例
  WebClient webClient = new
WebClient();
  webClient.Credentials =
CredentialCache.DefaultCredentials;
  //要上传的文件

  FileStream fs = new FileStream(filePath, FileMode.Open,
FileAccess.Read);
  BinaryReader br = new BinaryReader(fs);
  byte[]
postArray = br.ReadBytes((int)fs.Length);
  Stream postStream =
webClient.OpenWrite(serverPath, "PUT");
  try
  {
    if
(postStream.CanWrite)
    {
      postStream.Write(postArray, 0,
postArray.Length);
      postStream.Close();
      fs.Dispose();
    }
    else
    {
      postStream.Close();
      fs.Dispose();
    }

  }
  catch (Exception
ex)
  {
    postStream.Close();
    fs.Dispose();
    throw
ex;
  }
  finally
  {
    postStream.Close();
    fs.Dispose();
  }

}

/// <summary>
/// 下载文件方法
/// </summary>

/// <param name="serverPath">被下载的文件地址(服务器地址包括文件)</param>

/// <param name="filePath">另存放的路径(本地需要存储文件的文件夹地址)</param>

public void Download(string serverPath, string filePath)

{
  WebClient client = new WebClient();
  string fileName =
serverPath.Substring(serverPath.LastIndexOf("/") + 1); ;//被下载的文件名

  string path = filePath + fileName;//另存为地址

  try
  {
    WebRequest myre =
WebRequest.Create(serverPath);
  }
  catch (Exception
ex)
  {
    MessageBox.Show(ex.Message,
"Error");
  }
  try
  {
    client.DownloadFile(serverPath,
fileName);
    FileStream fs = new FileStream(fileName, FileMode.Open,
FileAccess.Read);
    BinaryReader r = new BinaryReader(fs);
    byte[]
mbyte = r.ReadBytes((int)fs.Length);
    FileStream fstr = new
FileStream(path, FileMode.OpenOrCreate,
FileAccess.Write);
    fstr.Write(mbyte, 0,
(int)fs.Length);
    fstr.Close();
  }
  catch (Exception
ex)
  {
  MessageBox.Show(ex.Message, "Error");
  }
}

时间: 2024-10-09 05:19:10

C# winform把本地文件上传到服务器上,和从服务器上下载文件的相关文章

Jquery form.js文件上传返回JSON数据,在IE下提示下载文件的解决办法,并对返回数据进行正确的解析

Jquery from.js插件上传文件非常方便,但是在ie10以下的版本会弹出下载文件对话框 解决方法: 1.在服务端设置response.setContentType("text/plain"); 2.对返回数据正确解析                这时返回的数据不再是json,不能使用解析json的方法进行解析                       var data1=eval("(" + data+ ")");  //将返回的字符

Plupload 上传详细讲解,Plupload 多实例上传,Plupload多个上传按钮--推荐使用

今天帮朋友解决  Plupload  上传的问题,查了很多资料,资料还是挺全的,但是有点零零散散的,故整理好,合并发出来. 本教程包括: Plupload  上传详细讲. Plupload  多实例上传. Plupload  多个上传按钮. Plupload  上传成功获取返回值. 我们来看一个比较全的  Plupload  Demo <!DOCTYPE html> <html> <head> <meta charset="UTF-8">

yii2.0下,单图片上传到搜狐云台以及图片上传到本机。

图片服务器接的是搜狐云台.在搜狐云台上有代码包,下载下来,放到yii框架的vendor下. yii2.0导入第三方库,很简单,写个autoload的文件,然后在入口脚本index.php中包含那个autoload文件就好了.具体到这个云台的库,只要包含代码中的autoload文件就好了. 简单介绍下搜狐云台的实现,用户会有一个对应的域名,然后选择建一些bucket,文件的上传下载都是在这个bucket中执行.函数调用在云台提供的文档中介绍的很清楚.这里就不再介绍了.同时我只从php的部分来介绍,

逆天啦--Lazada可以瞬间上传300多个SKU,顺利上传禁售品

相信有很多Lazada商家选择的产品是鞋子.服饰.手机壳等等.这类型的产品有一个共通点就是SKU太多太多太多,有时候一个产品的SKU高达好几百.要是用传统的表格方式或者Lazada后台一张张上传,想想都知道有多难,显然也是不可能那么去操作的.那么利用软件上传呢,现今的各种采集上传软件中又有哪一个能一次性将一个产品的三四百个SKU瞬间上传发布到Lazada店铺呢? 那么产品的SKU太多太多太多,上传太困难,怎么办呢?别急,让Lazada批量采集上货ERP软件来帮你.本软件专攻于Lazada批量采集

SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)

读取Excle表返回一个集合: package com.shiliu.game.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.lang.reflect

使用Kindeditor的多文件(图片)上传时出现上传失败的解决办法/使用Flash上传多文件(图片)上传时上传失败的解决办法

近来用户反映希望我们把在线编辑器中的多图片上传功能实现,因为他们在编辑商品描述时经常会有一次上传多张图片的需求,如果要逐张选择的话效率很低,客户的需求就是我们的追求,很快我们就把完善功能排到了日程表中,要求尽快实现. 我们在项目中使用的在线编辑器是Kindeditor4.1.10,它们的多文件上传插件是使用Flash实现的,原本应该就是能使用的,但为什么老是显示上传失败的,百度了一下前人的经验和教训,出现这种情况,有两种可能:1)上传的目标文件夹没有写权限,导致上传的文件无法进行写操作,所以上传

servlet文件上传2——复合表单提交(数据获取和文件上传)

上传文件时表单enctype属性必须要更改为<enctype='multipart/form-data'>:采用post提交表单,元素需要有name属性: 利用第三方jar包(commons-fileupload-1.2.1.jar   commons-io-1.3.2.jar )进行普通数据获取和文件上传:普通文本需要用getString("编码格式")方法获取,否则汉字会出现乱码,最开始我一直用的getString()获取,发现传到数据的数据全是乱码,查看流浪器的里面的

轻量级 web 文件上传组件,支持html5,支持上传进度显示(IE10+、标准浏览器),文件拖拽,降级支持IE6+

老早就注册了博客园帐号,昨天才发现,连博客都没开,Github也是一样,深觉惭愧,赶紧潜个水压压惊`(*∩_∩*)′ 言归正传.大概许多人都会用到文件上传的功能,上传的库貌似也不少,比如(jQuery File Uploader.FineUploader.Uploadify.Baidu Web Uploader 等等),功能都很强大,代码量一般也较大.当时心想,就这么个小功能,杀鸡焉用牛刀,用库的话还得熟悉它的用法,有的需要引入额外的库,纯Flash的不考虑,还是动手造个轮子得了,至少造过之后能

Liferay7 BPM门户开发之28: Portlet文件上传,及实体类同步更新上传

抓住核心 -- 王昕 Liferay文件上传的核心就是使用UploadPortletRequest类 继承关系java.lang.Object extended byjavax.servlet.ServletRequestWrapper extended byjavax.servlet.http.HttpServletRequestWrapper extended bycom.liferay.util.servlet.UploadPortletRequest 实现关系:Implemented I

java http大文件上传,断点续传项目研究,Github上传源代码

1,项目调研 因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面. https://github.com/freewebsys/java-large-file-uploader-demo 效果: 上传中,显示进度,时间,百分比. 点击[Pause]暂停,点击[Resume]继续. 2,代码分析 原始项目: https://code.google.com/p/java-lar