JS_IE_ActiveXObject_读取本地文件流及删除文件

  • 业务场景

之前公司项目中,应甲方要求在系统中接入扫描仪,经扫描仪扫描生成的文件自动上传到服务器且要求保密性,删除本地文件。

最开始联系的大名软件,但是好像只是提供软件支持,提供开发包sdk;后面选择了爱普生公司的产品,买产品的同时提供sdk开发包。他提供了几种模式下的代码,最开始我打算使用c端java程序,但是实现过程较复杂,最后选择它的js模式,但是只支持ie下运行。那莫法只有用OCX那套了。

这里只是简单记录下当时使用关于ActiveXObject的东西,最后会贴出链接。
还需要注意的是需要调整ie的internet选项。不然调用的时候会报错,这一切是微软的跨浏览器访问客户端文件的安全机制。

  • 配置IE
    JS_IE_ActiveXObject_读取本地文件流及删除文件_第1张图片

JS_IE_ActiveXObject_读取本地文件流及删除文件_第2张图片

这里需要将你的ip配置到受信任的站点里面,注意添加时如果是https的协议那直接添加,如果是http协议的那么先将勾勾取消,然后再添加。
JS_IE_ActiveXObject_读取本地文件流及删除文件_第3张图片

这里将安全级别拉到最低,如果不得行,访问继续报错的话,那么自己自定义级别,看到图上有关ActiveX下面的所有禁用改为启用。

JS_IE_ActiveXObject_读取本地文件流及删除文件_第4张图片

再找到图示的其他选项下面,将“通过域访问数据源”启用
JS_IE_ActiveXObject_读取本地文件流及删除文件_第5张图片

好,重启计算机,重启ie。

  • 读取本地文件流
var stream =new ActiveXObject("ADODB.Stream");
	stream.Type=1;
	stream.Open();
	stream.Position = 0;
	stream.LoadFromFile(fileClientpath+"\\"+scanfilename+"0000.pdf");
	stream.Position = 0;
	//sendByteStreamToServer(stream,url);
	stream.Close();
	//fileClientpath:为客户端的绝对路径
	//scanfilename:为文件名称
	//stream:读取的本地文件流二进制数据
  • 删除本地文件
var fso = new ActiveXObject("Scripting.FileSystemObject"),
	clientFile = fso.GetFile(fileClientpath+"\\"+scanfilename+"0000.pdf");
	
	if(fso.FileExists(fileClientpath+"\\"+scanfilename+"0000.pdf")){
		fso.DeleteFile(fileClientpath+"\\"+scanfilename+"0000.pdf")
	}
	//判断是否删除成功
	//var isDeleteFile = fso.GetFile(fileClientpath+"\\"+scanfilename+"0000.pdf");
	if(!fso.FileExists(fileClientpath+"\\"+scanfilename+"0000.pdf")){
		//$.showTips("删除本地文件成功")
	}
  • 删除指定文件下所有文件
	var fileClientpath = "e:\\scantest";
	var fso = new ActiveXObject("Scripting.FileSystemObject")
	if(fso.FolderExists(fileClientpath)){
		try{
			//删除除文件夹以外的所有文件  
			fso.DeleteFile(fileClientpath+"\\*");
			//删除所有文件夹
			fso.DeleteFolder(fileClientpath+"\\*"); 
		}catch(e){ 
			alert("*.*" + e.message);  
		}  
	}else{
		fso.CreateFolder(fileClientpath)
	}

关于文件的其他操作,这次没在项目中使用,其实主要是为了配合硬件商提供的接口,选择使用了ie。其实在H5中提供了有关文件的操作,但是我还没有切了解过。

Adodb.Stream详情
FileSystemObject详情

你可能感兴趣的:(Javascript)