前段时间写了一个IC卡读写COM组件,这个组件可以把数据以文件的方式读写到IC卡里;但是由于有时服务器端是WebServer,需要把文件download/upload到WebServer.
在这个过程中由于读完IC卡文件后,需要立即upload到服务器,所以不能用标准的<input type="file">html标签去传送文件,后来用了公司另外一个Team的组件,可以实现多线程,分片上传,但是由于此组件封装太死,在我们Team的开发平台下运行,界面展现有问题;百般无奈中,只能自己寻找方法:
1.通过XMLHTTP传输
<script type="text/javascript">
function doFileUpLoad()
{
var strFilePath = "c:\\0000000005.txt";
var xmlstream = new ActiveXObject("ADODB.Stream");
xmlstream.Mode = 3; //read write
xmlstream.Open();
xmlstream.Type = 1; // adTypeBinary
xmlstream.LoadFromFile(strFilePath);
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
xmlhttp.Open("POST","http://127.0.0.1:8088/SomePost",false);
xmlhttp.setRequestHeader("Content-Length",xmlstream.Size); //set the length of the content
xmlhttp.send(xmlstream.Read(xmlstream.Size)); //Send the stream
//alert(xmlhttp.responseText);
var text = BytesToBstr(xmlhttp.responseBody,"GBK");
document.getElementsByName("data")[0].value = text;//xmlhttp.responseText;
}
function BytesToBstr(body,Cset)
{
var objstream = new ActiveXObject("ADODB.Stream");
objstream.Type = 1;
objstream.Mode = 3 ;
objstream.Open();
objstream.Write=body;
objstream.Position=0;
objstream.Type=2;
objstream.Charset=Cset;
var result = objstream.ReadText();
objstream.Close();
return result;
}
</script>
传输过去的文件内容,放在“空行”数据下面(POST发送的HTTP协议数据,最后一个HTTP Header下面是空行,空行下面是Header以外的数据),可以通过服务器端去处理文件内容,至于文件名称,可以直接写在自定义HTTP Header里,或写入文件内容最前面(当然文件大小、文件内容Hash值等都可以写入进去);最后由服务器端程序(如Servlet)把数据流写入文件。
2.直接把文件内容存在标签value中。
function doReadFileToBuff(filename)
{
var ForReading = 1, ForWriting = 2, ForAppending = 8;
// The following line contains constants for the OpenTextFile
// format argument, which is not used in the code below.
var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
var fso = new ActiveXObject("Scripting.FileSystemObject");
// Open the file for output.
var f = fso.OpenTextFile(filename, ForReading, true,TristateUseDefault);
var value = "";
if (!f.AtEndOfStream)
value = f.ReadAll();
f.Close();
document.getElementById("form:filecontent").value = value;
}
这种方式其实最简单,不用专门去解析HTTP协议,不过FileSystemObject Activex只能处理文本文件,对于处理二进制文件,会丢掉一些文件内容;如果处理二进制文件,可以使用第一种方式。
具体FileSystemObject 可以参考MSDN:http://msdn.microsoft.com/en-us/library/z9ty6h50(VS.85).aspx
分享到:
相关推荐
此示例演示了如何通过Web浏览器使用“ b2_upload_file” Backblaze B2 Cloud Storage API将文件直接从Web浏览器上传到B2存储桶,而文件内容不必通过您控制的中间Web服务器。 这类似于对其他云存储提供商使用技术,...
因此解决了浏览器,创建文件队象的差异性,IE使用ActiveOBject,非IE使用XMLHttpRequest,但是此时非IE文件队象在操作对象时候即便是支持file协议,但是onreadystatechenge方法中的一些请求方法与相应状态码是HTTP...
在许多Web站点应用中都需要为用户提供通过浏览器...但在Web服务器端如何获取浏览器上传的文 件,需要进行复杂的编程处理。为了简化和帮助Web开发人员接收浏览器上传的文件,一些公司和组织专门开发了文件上传组件。
本示例使用框架来展示网站如何使访问者能够直接将文件上传到 ,而不是通过Web服务器。 为什么要使用直接上传模式? 文件上传是网站的常见功能,但是使用时如何立即构建文件尚不明显。 在传统模型中,Web服务器从...
8.整合的系统可以使文件服务器与WEB系统服务器相分离,使得您的系统可进行无限扩容。服务器端动态帐号加密组件无缝地支持dotnet,asp,php,jsp. 静态加密程序加密结果支持所有据于WEB的应用系统。 9.控件对FTP帐号等...
从浏览器上载文件到IPFS-面板 介绍 通过浏览器直接将文件上传到IPFS。 您可以选择使用本地或远程运行的IPFS节点,因此安装IPFS节点是可选的。 API的简单直观的Web界面 此处使用的语言(javascript,html和css)适用...
文件上传是Web中常见的功能,选择性也很多,比如将文件上传到oss等类似的文件服务器上,这种方式成本比较高。文件的上传和显示操作比较简单。另外就是在文件上传到项目路径的静态资源文件夹resources/下。还可以上传...
正常打包WebGL后在浏览器直接运行会报以下这个错: It seems your browser does not support running Unity WebGL content ...我们通过部署IIS服务把本机当做服务器,配置到打包后的路径就能正常在本地浏览器打开运行
Socket.IO文件上传该模块提供了将文件从浏览器上载到运行Socket.IO的Node.JS服务器的功能。 在整个过程中,如果他们的浏览器支持WebSocket,则用户将不会提交单个HTTP请求。 支持Socket.IO 0.9及更高版本。 预期的...
PHP调用方法如下载3(在一个动态页面中使用多个WebFTP,同时上传多个文件到安装有FTP服务器的Web服务器) 源程序涉及的ActiveX中使用线程问题还没有解决,但上传多个文件使用一切正常,只是线程没有被自动释放...
使用 AWS 签名版本 4 从浏览器直接异步 (AJAX) 上传文件到 Amazon Web Services (AWS) Simple Storage Service (S3) 的 Vanilla JavaScript(和 Node.js)示例 设置 您需要安装和一个 AWS 帐户。 在代码方面没有外部...
它也是一个Web代码编辑器,可让您直接在Web浏览器中开发网站。您可以在基于Linux,Windows或Mac的平台上在线或本地运行KodExplorer。 唯一的要求是要有PHP 5。 [用户:演示/演示] 源代码 产品特点 使用操作系统,...
1. 运行 JavascriptServer 程序文件后,点击 启动 按钮,就可以运行 Web 服务同时支持 javascript 脚本规则的服务器端程序编写。 2. 在根文件夹中的 web、upload、data 为默认目录。 2.1 web 文件夹用于站点文件...
Weblink & Upload link 方便地创建和分享文件共享链接(用于下载和上传), 让你的客户不用再登录客户端. 数据库存储 & LDAP验证 通过 XML文件,ODBC 或 MySQL数据库来存储大量的用户数据. 还可以用LDAP或活动目录来做...
执行updown程序启动服务器,可选择监听端口,在浏览器中访问服务器即可实现上传/下载文档,上传的文档存入服务器的upload子目录下。软件包中有使用说明文档。
前端项目-cloudinary-jquery-file-upload,Cloudinary客户端JS库。Cloudinary简化了Web应用程序的图像处理需求。...Cloudinary的jquery文件上传插件允许从浏览器直接上传到云和动态基于云的图像转换和效果。
端点可用于通过 Web 浏览器或命令行工具(例如curl )上传文件。 如果您希望让您的客户(或任何人)能够上传只有您可以访问的文件,并且无需您实际维护任何基础设施,这将非常有用。 客户使用预先生成和预先签名...
配置: 根据uploader.conf.sample创建一个新的配置文件,并将其命名为uploader.conf 根据需要编辑: [http] 调试=真主机= 0.0.0.0 端口= 8888 upload_files_dir = /用户/ dayvson / uploader /数据/ template_dir =...
java web 实现文件上传和下载,在浏览器上传和下载文件,基于Tomcat服务器实现的 服务器开启后,在浏览器输入: 上传文件:http://localhost:8080/server/upload.jsp 下载文件:...
文件上传状态类(FileUploadStatus)2.1.2.文件上传状态侦听类(FileUploadListener)2.1.3.后台服务类(BackGroundService)2.1.4.文件上传状态控制类(BeanControler)2.2.客户端代码2.2.1.AjaxWrapper.js2.2.2....