转:wcf大文件传输解决之道(1)】的更多相关文章

此篇文章主要是基于http协议应用于大文件传输中的应用,现在我们先解析下wcf中编码器的定义,编码器实现了类的编码,并负责将Message内存中消息转变为网络发送的字节流或者字节缓冲区(对于发送方而言).在接收方,编码会将一系列字节转变为内存中的消息 在wcf中有三个编码器 1.TextMessageEncodingBindingElement 文本消息编码器是所有的基于Http的绑定的默认编码器,并且是最关注互操作性的所有的自定义绑定的正确选择.即为请求/应答模式,此编码器读取和编码标准为SO…
首先声明,文章思路源于MSDN中徐长龙老师的课程整理,加上自己的一些心得体会,先总结如下: 在应对与大文件传输的情况下,因为wcf默认采用的是缓存加载对象,也就是说将文件包一次性接受至缓存中,然后生成对象,显然对于大文件的传输,这种方式是不可取的,一般我们采用流传输或者更优秀的本本编码方式,在文本编码这一块我们一般采用w3c提出的MTOM传输机制,MTOM(Message Transmission Optimization Mechanism),是W3C的MTOM的消息传输优化机制,有效地发送的…
http://www.cnblogs.com/happygx/archive/2013/10/29/3393973.html WCF大文件传输 WCF传输文件的时候可以设置每次文件的传输大小,如果是小文件的时候,可以很方便的将文件传递到服务端,但是如果文件比较大的话,就不可取了 遇到大文件的话可以采取分段传输的方式进行文件传输 思路: 1.客户端循环传递 2.将文件分割成指定大小的字节块 3.每次传输一小块后,客户端将当前文件的读取指针移动到指定位置 4.服务端每次依照传递过来的字节文件追加 问…
由于项目需要,自己写一个基于WCF的大文件传输服务雏形.觉得有一定的参考价值,因此放在网上分享. 目前版本为v1.1特点如下: 1.文件传输端口为18650 2.上传和下载文件 3.支持获取文件传输状态(未开始.传输中.传输完成.出现错误) 4.支持获取文件传输进度(范围0~1) 5.支持获取文件传输速度速度(按文件传输速度大小 自动切换 KB/s 和 MB/s显示) 项目解决方案如下: 服务断包括WCF寄宿的控制台服务和Windows 服务以及文件传输服务核心 公共包括一些帮助类(文件HASH…
WCF传输文件的时候可以设置每次文件的传输大小,如果是小文件的时候,可以很方便的将文件传递到服务端,但是如果文件比较大的话,就不可取了 遇到大文件的话可以采取分段传输的方式进行文件传输 思路: 1.客户端循环传递 2.将文件分割成指定大小的字节块 3.每次传输一小块后,客户端将当前文件的读取指针移动到指定位置 4.服务端每次依照传递过来的字节文件追加 问题:假设文件有好几个G大小,按照上述方式进行文件传输,当文件传递到99%的时候突然由于客观原因而造成文件传输失败,直接会造成服务器已经上传的文件…
<bindings> <webHttpBinding> <!--这个是接收大数据加的,设置WCF服务器端数据接收上限参数,此处单位字节,故2147483647字节==2G, 仅修改这里尚不能突破 .net默认只能传4M文件的限制,还要修改 httpRuntime maxRequestLength 参数--> <binding name="CustomWebBinding" maxBufferPoolSize="2147483647&q…
目录 1       大概思路... 1 2       Nginx集群之WCF大文件上传及下载... 1 3       BasicHttpBinding相关配置解析... 2 4       编写WCF服务.客户端程序... 3 5       URL保留项... 8 6       部署WCF服务程序到局域网内1台PC机... 8 7       Nginx集群配置搭建... 9 8       WCF客户端程序的运行结果... 11 9       总结... 13 1       大概…
https://www.zhihu.com/question/39593108 作者:ZeroOne链接:https://www.zhihu.com/question/39593108/answer/250480994 1. 一般的Web开发框架(比如Java的Struts2.SpringMVC,dotNet的WebForm和MVC,NodeJS的Express.Koa),在基于Web Server(比如Tomcat.IIS.Apache.Nginx)处理HTTP Request的时候,都倾向于…
2008上传大文件的解决方法:http://wenku.it168.com/d_000091739.shtml 2003上传大文件的解决方法:http://tech.v01.cn/windowsxitong/58.html 欢迎大家访问我的博客:http://www.ruisoftcn.com/blog…
分类: WINDOWS 最近接触到利用socket进行大文件传输的技术,有些心得,与大家分享.首先看看这个过程是怎么进行的(如下图):      所以,我们需要三个socket在窗体加载的时候初始化: 1. 等到收货请求的socket(即等待对方向自己发出发送文件的请求:monitorSocket,端口:monitorPort) 2. 接收收货方响应的socket(即对方是否愿意接收大文件的回应:responseSocket:端口:responsePort) 3. 收货方收货的socket(即接…
AetherUpload-Laravel是laravel框架下的一个大文件传输组件 github:https://github.com/peinhu/AetherUpload-Laravel 文件传输默认路径:storage\app\aetherupload\file…
题外话:这个系列的文章记录了本人最近写的一个小工程,主要包含了两个功能,一是对文件的断点续传的功能,二是基于WCF的一对多文件主动发送的功能,顺便这也是我自己在WCF学习路上的一个小成果吧. 在网上找了很多关于文件断点续传的例子,没看到有写的特别好的,可能好的代码都是内部使用的吧.因为自己在项目中时常会遇到文件传输的问题,所以这次就按照自己的想法来实现了一个,要说写的时候有没有参考过别人的代码,那肯定是没有的,因为我参考的是某c论坛里关于bt种子和迅雷文件下载的实现思路,虽然只有几句话而已,但也…
一.TCP协议 粘包现象 和解决方案 黏包现象让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd)执行远程命令的模块 需要用到模块subprocess subprocess通过子进程来执行外部指令,并通过input/output/error管道,获取子进程的执行的返回信息. import subprocess sub_obj = subprocess.Popen( 'ls', #系统指令 shell=True, #固定 stdout=subprocess…
问题描述 将附件上传至FTP服务器,但是当附件过大,其大小为几百兆或1-2G时,会出现上传失败的现象 FTP上传原理解析 这里我们使用的是.Net的FtpWebRequest 创建FtpClient 进行附件上传 基本流程:文件上传或下载都是先将文件流拿到-->将文件流读入缓存-->程序从缓存中读取所需内容写入文件 在流读取到缓存区时可以setBufferSize 通常是1024 或是1024的倍数,默认是1024(这对于小文件的传输是足够了的) 问题查找 当前程序的bufferSize设置是…
IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传的下载: Accept-Ranges:告知下载客户端这是一个可以恢复续传的下载,存放本次下载的开始字节位置.文件的字节大小: ETag:保存文件的唯一标识(我在用的文件名+文件最后修改时间,以便续传请求时对文件进行验证): Las…
今天我在远程登录另一台windows的时候,需要传输一个大约3GB的文件,但是每每经过了一会儿,就会提示我未知错误问题. 我在网上找了一下,本问题的解决方法如下. 1.打开远程登录的对话窗口 2.选择 选项 按钮 3.点击 本地资源 4.本地资源和设备  这一项上点击详细信息 5.展开  驱动器 6.只勾选存储着大文件所在的磁盘,剩下的全部取消勾选 7.连接后,远程登录的电脑  在我的电脑内会发现一块挂载的磁盘,这个时候再拷贝文件就不受影响了.…
1.最近在解决问题的时候遇到如何将视频以及语音和图片上传到阿里云的服务器中.但是遇到一些大文件就导致无法进行上传. 2.在将图片进行上传到阿里云的时候先将文件转化为二进制文件,然后通过文件流 的形式进行上传到阿里云中. 3.但是通过传统的<input type="file"> 只能上传 4M 以内的文件.那么如何上传比较大的文件了.其实方式非常的简单. 在Web.config 修改一些配置参数以及配置项就可以了. 配置参数修改如下所示: <system.web>…
Python简易http服务器源码 import SimpleHTTPServerimport SocketServerimport sysPORT = 80if len(sys.argv) != 2:    print("use: web.exe port")else:     PORT = int(sys.argv[1])    Handler = SimpleHTTPServer.SimpleHTTPRequestHandler    httpd = SocketServer.T…
大文件,就是内容的大小超过了一定数量的文件,比如1个GB的文件. 站点一般会限制上传文件的大小,如果超过了一定限制,则会报错误. 在处理大文件上传的方式上,IIS代理和Kestrel宿主服务器的处理方式是不一样的. 一.Kestrel宿主服务器 解决方法如下: 第一种处理方式:在需要处理大文件的接口中使用RequestSizeLimitAttribute特性.如: /// <summary> /// 上传文件 /// </summary> [HttpPost("uploa…
Mysql复制,初始化服务器,备份/还原等大文件复制是很常见的任务,他们完成的实际任务可以概括为: 1,(可选)压缩文件 2,发送文件 3,解压文件 4,验证文件一致性 下面介绍几种方法: 1,最简单的: 先进行压缩,再用scp发送到服务器 gzip -c /folder/bigfiles/ > bigfiles.gz scp bigfiles.gz root@test.host:/folder/bigfiles/ 然后在服务器的解压: gunzip /folder/bigfiles/bigfi…
基于TCP的大文件上传服务端实现 # 服务端 # -*- coding: utf-8 -*- from socket import * import json, struct server = socket(AF_INET, SOCK_STREAM) server.bind(('127.0.0.1', 8080)) # 本地循环地址 server.listen(5) while True: # 链接循环 accept() -> (socket object, address info) conn…
有时候在linux下会遇到这种情况:df查看空间已经占用%100,但是找不到大文件,怎么回事呢,经过网上查找资料,得到解决方法: 1.使用lsof查看已删除但未释放的文件 lsof -n | grep deleted # 重启相关程序即可 2.如果lsof还是未查找到大文件,那有可能根目录下有隐藏文件夹占用了空间: 本人经常du /* -sh查看根目录占用情况,这样会查看目录根目录下的隐藏文件夹,需要使用以下命令查看du / -h --max-depth=1…
FTP的具体使用      FTP是一种网络协议,用于进行不同服务器主机之间的文件传输,或者简单地说两台不同IP的机器之间的文件传输.在java中我们什么时候需要用到FTP文件传输呢?比如两台服务器的互动,将我这台机器上的资源文件传输给你,让你也能拥有他.      FTP用起来其实也是一个相当简单,但是却非常实用的技术.下面就贴出FTP的源代码和注释,让大家去理解FTP的用法.       ------------------------------------------FTPbean,也可…
asp .net config配置 需要在配置文件里面设置文件上传限定的两个属性值:maxAllowedContentLength,maxRequestLength 允许上传文件的长度,和请求的长度,两个大小需要设置一致,如果不一致,则以请求长度为准.(设置的单位都为byte) 默认请求长度只有4M. <system.web> <httpRuntime maxRequestLength="2147483647" executionTimeout="36000…
1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使用PECL模块安装方法快速简捷,这里不说明 配置php.ini,设置参数 apc.rfc1867=1 ,使APC支持上传进度条功能,在APC源码说明文档里面有说明 代码范例: 大文件(50G)上传的实现细节: 服务端接收文件数据的处理逻辑代码: 2.使用PECL扩展模块uploadprogress实…
我们经常需要在机器之间传输文件.比如备份,复制数据等等.这个是很常见,也是很简单的.用scp或者rsync就能很好的完成任务.但是如果文件很大,需要占用一些传输时间的时候,怎样又快又好地完成任务就很重要了.在我的测试用例中,一个最佳的方案比最差的方案,性能提高了10倍. 复制文件 如果我们是复制一个未压缩的文件.这里走如下步骤: 压缩数据 发送到另外一台机器上 数据解压缩 校验正确性 这样做会很有效率,数据压缩后可以更有效的利用带宽 使用ZIP+SCP 我们可以通过ZIP+SCP的组合实现这个功…
最近想更新一下Xcode8.3,无奈资源太大,不想一点点下载了,公司服务器上正好有官网下载好的,就想直接拿过来使用,本来想通过QQ传输的,无奈发现QQ传输提示资源过大. 于是就想到了这货:AirDrop AirDrop的原理其实是走蓝牙传输,Wi-Fi辅助,Wi-Fi不需联网,只要开着就好. 下面是步骤,很简单: 1.保证双方都开启AirDrop,并设置权限: 可设置联系人,但最方便的是直接所有人,事后可再关闭. 2.发送方,会在这里看到联系人,直接拖文件到指定人的头像框 3.接收方等待几秒,会…
问题: - 前端页面点击上传按钮,不超过30M的小文件顺利上传到板子指定位置,上传60Md的更新包,出错,http状态码413——请求实体过大 环境: - web服务器——lighttpd1.4.30 - cgi——c语言写的(未设限上传文件大小) - 前端——Vue(未设限上传文件大小) 解决办法: - 检查更改lighttpd的配置文件lighttpd.conf中两项配置: 1.server.upload-dirs:上传临时目录,默认为"/var/tmp",这个默认目录不一定有足够…
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性.如MD5秒传的信息. public class FileInf { public FileInf(){} public String id=""; public String pid=""; public Str…
HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx.cs"Inherits="up6.index" %> <!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/…