C#实现HTTP请求文件下载,GET、POST请求的数据流接收
参考的地址:http://www.jb51.net/article/57068.htm
public string CopyFileByUrl(string url)
{
string name = url.Substring(url.LastIndexOf('/') + );//获取名字
string fileFolder = UploadConfigContext.UploadPath;
string filePath = Path.Combine(fileFolder, name);//存放地址就是本地的upload下的同名的文件
if (!Directory.Exists(fileFolder))
Directory.CreateDirectory(fileFolder); string returnPath = GetSimplePath(filePath);//需要返回的路径
if (File.Exists(filePath))
{//如果已经存在,那么就不需要拷贝了,如果没有,那么就进行拷贝
return returnPath;
}
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
request.ProtocolVersion = new Version(, );
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.NotFound)
{
return string.Empty;//找不到则直接返回null
}
// 转换为byte类型
System.IO.Stream stream = response.GetResponseStream(); //创建本地文件写入流
Stream fs = new FileStream(filePath, FileMode.Create);
byte[] bArr = new byte[];
int size = stream.Read(bArr, , (int)bArr.Length);
while (size > )
{
fs.Write(bArr, , size);
size = stream.Read(bArr, , (int)bArr.Length);
}
fs.Close();
stream.Close();
return returnPath;
}
Copy代码
public string GetSimplePath(string path)
{
//E:\Upload\cms\day_150813\1.jpg
path = path.Replace(@"\", "/");
int pos = path.IndexOf("Upload");
if (pos != -1)
{
pos = pos - 1;//拿到前面那个/,这样为绝对路径,直接保存在整个项目下的upload文件夹下
return path.Substring(pos, path.Length - pos);
}
return "";
}
C#实现HTTP请求文件下载,GET、POST请求的数据流接收的更多相关文章
- 原生js实现文件下载并设置请求头header
原生js实现文件下载并设置请求头header const token="自行定义";//如果有 /** * 向指定路径发送下载请求 * @param{String} url 请求路 ...
- IIS请求筛选模块被配置为拒绝超过请求内容长度的请求
HTTP错误404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求,原因是Web服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 默认文件上传大 ...
- http请求get与post请求的几种实现
[说明]:非原创,前两种post请求需要依赖Apache开源框架来实现:最后一种get/post请求则不需要依赖第三方框架 普通表单调用(post请求) /** * 普通表单调用 * 根据参数url, ...
- Android okHttp网络请求之Get/Post请求
前言: 之前项目中一直使用的Xutils开源框架,从xutils 2.1.5版本使用到最近的xutils 3.0,使用起来也是蛮方便的,只不过最近想着完善一下app中使用的开源框架,由于Xutils里 ...
- 普通B/S架构模式同步请求与AJAX异步请求区别(个人理解)
在上次面试的时候有被问到过AJAX同步与异步之间的概念问题,之前没有涉及到异步与同步的知识,所以特意脑补了一下,不是很全面... 同步请求流程:提交请求(POST/GET表单相似的提交操作)---服务 ...
- x-requested-with 请求头 区分ajax请求还是普通请求(转)
在服务器端判断request来自Ajax请求(异步)还是传统请求(同步): 两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数 1.传统同步请求参数 accept t ...
- HTTP错误404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求
http://www.cnblogs.com/JKqingxinfeng/archive/2012/10/29/2744663.html HTTP错误404.13 - Not Found 请求筛选模块 ...
- zzy:请求静态资源和请求动态资源, src再次请求服务器资源
[总结可以发起请求的阶段:请求动态资源:通过web.xml匹配action然后,自定义Servlet处理该action1)form表单提交请求的时候,用action设定,该页面发起请求的Servlet ...
- HTTP协议---HTTP请求中的常用请求字段和HTTP的响应状态码及响应头
http://blog.csdn.net/qxs965266509/article/details/8082810 用于HTTP请求中的常用请求头字段 Accept:用于高速服务器,客户机支持的数据类 ...
随机推荐
- 通过C#脚本实现旋转的立方体
一.介绍 目的:通过一个简单的例子(鼠标点击,使立方体旋转和变色)熟悉Unity中C#脚本的编写. 软件环境:Unity 2017.3.0f3 . VS2013. 二.C#脚本实现 1,启动Unity ...
- 目标检测之rcnn---开启检测新高度优于dpm
http://www.cnblogs.com/louyihang-loves-baiyan/p/4839869.html http://www.cnblogs.com/louyihang-loves- ...
- UIView - CAGradientLayer
CAGradientLayer *layer = [[CAGradientLayer alloc] init]; layer.frame = self.bounds; //渐变转折点 layer.lo ...
- eclipse断点Source not found解决方案1,2,3
1.tomcat插件 路径是Window --> Preferences --> Tomcat --> Source Path,在Source Path 标签下有行文字:Add ja ...
- 谈谈Android NDK中动态链接库(.so文件)的优化
做了不少NDK相关的工作,不知道别人有没有同样的困惑,经常在编译C/C++代码的时候会出一些error或者warning,然后在网上搜,发现在Android.mk或者Application.mk文件中 ...
- MyEclipse如何恢复删掉的文件
今天一不小心删了项目里的两个包,心里那个痛啊,一想MyEclipse这么强大,应该会有恢复文件的功能吧,要不就太坑了啊. 果不其然让我找到了方法: 如图:右击项目选择 然后在弹出的页面勾选需要恢复的文 ...
- 什么时候layoutSubview会被调用
文档描述不够详细,有人测试结果如下: init does not cause layoutSubviews to be called (duh) addSubview causes layoutSub ...
- 无插件用Terminal/TotalTerminal的开当前finder位置
从win7开始,在资源管理器内按住shift再右键,是可以选择“在当前位置打开命令行”的,相当有用,这个命令在mac下是如何实现的呢? 前提:我讲的是TotalTerminal下的方案,原生的term ...
- 黏性Session和非黏性Session
黏性Session和非黏性Session黏性Session:此模式下同一会话中的请求都被派送到同一个tomcat实例上,这样我们就无须在多台服务器之间实现session共享了,这是其好处,不好的地方就 ...
- js数组push方法使用注意
js 数组的push方法,想必大家都知道是向数组末尾添加元素,但是有一个很关键的点需注意: 引自MDN 返回值 当调用该方法时,新的 length 属性值将被返回. var sports = [&qu ...