JS 读写、上传、下载文件

读TXT文件

    window.resolveLocalFileSystemURL(
        cordova.file.externalRootDirectory + "json/",
        function(directoryEntry) {
            var directoryReader = directoryEntry.createReader();
            directoryReader.readEntries(
                function(fileEntry){
                    for (var i = 0; i < fileEntry.length; i++) {
                        if(fileEntry[i].name == "trainX.json") {
                            fileEntry[i].file(
                                function(file) {
                                    var reader = new FileReader();
                                    reader.onloadend = function(evt) {
                                        console.log("trainX read success!!");
                                        // console.log(evt.target.result);
                                        str = evt.target.result;
                                        var obj = JSON.parse(str);
                                    }
                                    reader.readAsText(file);
                                    console.log(x_col);
                                },
                            );
                        }
                    }
                },
                function(error){
                    console.log("Failed to readEntries " + error.code);
                }
            )
        },
        function(error) {
            console.log("Failed to resolveLocalFileSystemURL " + error.code);
        }
    );

写TXT文件

    window.resolveLocalFileSystemURL(
        cordova.file.externalRootDirectory + "files/", //进入文件所在目录
        function(directoryEntry) {
            directoryEntry.getFile( //查找或新建parameter.txt文件
                "parameter.txt", 
                {create: true, exclusive: false},
                function(parent) {
                    console.log("Creates or looks up the parameter.txt file.");
                    console.log("Parent Name: " + parent.name);
                },
                function(error) {
                    console.log("Failed to retrieve parameter.txt file " + error.code);
                }
            );  
            
            var directoryReader = directoryEntry.createReader();
            directoryReader.readEntries(
                function(fileEntry) {//读目录下的每一项,找到parameter.txt,写参数
                    for (var i = 0; i < fileEntry.length; i++) {
                        if(fileEntry[i].name == "parameter.txt") {
                            console.log("Found the parameter.txt file.");
                            fileEntry[i].createWriter(
                                function(writer) {
                                    console.log("writer!!");
                                    // console.log(arrtoJson(classifier.W));
                                    // console.log(arrtoJson(classifier.b));
                                    writer.write(arrtoJson(classifier.W) + ";" + arrtoJson(classifier.b));
                                    console.log("Written W to the parameter.txt file..");
                                },
                                function(error) {
                                    console.log("Failed to create Writer " + error.code);
                                }
                            );
                            break;
                        }
                        console.log("Not Found the parameter.txt file.");
                    }

                },
                function(error) {
                    console.log("Failed to readEntries " + error.code);
                }
            )
        }, 
        function(error) {
            console.log("Failed to resolveLocalFileSystemURL " + error.code);
        }
    );

上传ZIP文件

var Survey_Zip_ft;
function uploadZip(fileUri) {
	console.log("[UPLOAD ZIP AND RECORD] uploadZip: ", fileUri);
	FileUploadFlag = false;
	fileUri = cordova.file.externalRootDirectory + "survey_voice_zip/" + fileUri;
	var uri = encodeURI(URL_UPLOAD_ZIP);
	var options = new FileUploadOptions();
	options.fileKey = "file";
	options.fileName = fileUri.substr(fileUri.lastIndexOf('/') + 1);
	options.mimeType = "multipart/form-data";
	var headers = {
		'headerParam' : 'headerValue'
	};
	options.headers = headers;
	Survey_Zip_ft = new FileTransfer();
	Survey_Zip_ft.onprogress = function(progressEvent) {
		if (progressEvent.lengthComputable) {
			$.mobile.loading("show",{
				text: " "+(RecordUploadNum+1) + '/' + RecordUploadFile.length +"已上传     " + Math.round((progressEvent.loaded / progressEvent.total) * 100) + "%",
				textVisible: true,
				theme: "a",
				html: ""
			}); 
		}  
	};
	ZipAction = false;
	Survey_Zip_ft.upload(fileUri, uri, uploadZipSuccess, uploadZipFail, options);
}

移动ZIP文件

function moveZipFile() {
	console.log("ZIP RECORD AND PHOTO: MOVEZIPFILE => START");
	document.addEventListener('deviceready',function () {
	window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory+"survey_voice_zip/" + RecordUploadFile[RecordUploadNum - 1], function(source) {
		window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory+"survey_voice_zip/", function(directory) {
			var newDir = directory.getDirectory("backup",{
				create : true,
      			exclusive : false
      		}, function(dest){
      			var date = new Date(); // 获取当前时间戳 
      			var newName = source.name.substr(0, source.name.length - 4) + "_" + date.getTime() + ".zip"; 
      			console.log(newName);
			    source.moveTo(dest, newName, function(entry){
			    	console.log("move success path: ", entry.fullPath);
			    		console.log("ZIP RECORD AND PHOTO: MOVEZIPFILE => SUCCESS");
			    		if (RecordUploadNum < RecordUploadFile.length) {
			    			console.log(3333);
			    			uploadZip(RecordUploadFile[RecordUploadNum]);
			    		} else {
			    			setTimeout(function(){
			    				FileUploadFlag = true;
			    				$.mobile.loading("hide");
			    				navigator.notification.alert(
			    					'所有文件上传成功',
			    					null,
			    					'提示',
			    					'确定'
			    				);
			    			},1000);
			    		}
			    }, function(error){
			    	console.log("ZIP RECORD AND PHOTO: MOVEZIPFILE => FAILED", error);
			    });
      		},function(err){
      			console.log("newDir:::" + err);
      		});
		},function(err){
      		console.log("directory:::" + err);
      	});
  	},function(err){
      	console.log("source:::" + err);
    });
	},false);
}

上传log文件

function upload_error_log(){
	if(localStorage.getItem("error_log_offset") == "0"){
		navigator.notification.alert(
				'日志已全部上传!',
				null,
				'提示',
				'确定'
				);
		return;
	}
	fileUri = "file:///storage/emulated/0/survey_log/" + localStorage.getItem("error_log");
	var uri = encodeURI(URL_UPLOAD_ERROR_LOG);
	var options = new FileUploadOptions();
	options.fileKey = "file";
	options.fileName = fileUri.substr(fileUri.lastIndexOf('/') + 1);
	options.mimeType = "multipart/form-data";
	var headers = {
		'headerParam' : 'headerValue'
	};
	options.headers = headers;
	var ft = new FileTransfer();
	ft.onprogress = function(progressEvent) {
	};
	ft.upload(fileUri, uri, function(r){
		console.log("error log upload success");
		localStorage.setItem("error_log","log_" + localStorage.getItem("viewerId") + "_" + (parseInt(localStorage.getItem("error_log").split("_")[2].split(".")[0])+1) + ".txt");
		localStorage.setItem("error_log_offset","0");
		navigator.notification.alert(
				'日志上传成功!',
				null,
				'提示',
				'确定'
				);
	}, function(r){
		navigator.notification.alert(
				'日志上传失败,请稍后重试!',
				null,
				'提示',
				'确定'
				);
		console.log("error log upload fail");
	}, options);
}

删除文件

		window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory + "survey_voice_zip/", function(directory) {
			var directoryReader = directory.createReader();
			directoryReader.readEntries(function(entries) {
	            for(var idx =0; idx< entries.length;idx++){
	                var file = cordova.file.externalRootDirectory + "survey_voice_zip/"+ entries[idx].name;
	                if(entries[idx].isFile){
	                    window.resolveLocalFileSystemURL(file, function (fileEntry) { 
	                    fileEntry.file(function(file){
	                        if(file.size ==0){
	                        		fileEntry.remove(function () {
	         						console.log('delete success');  
	         					}, function (err) {  
	         						console.log(err,"233");  
	         					}, function () {  
	         						console.log('file not exist');  
	         					});  
	                        }
	                    })
	                }) 
	                }
	            }
	        })
		});

将图片转换成ZIP文件

function startZipPhoto(filename, callback) {
	console.log(Ziped, Zipempty, ZipNum);
	var source = cordova.file.externalRootDirectory + "survey_photo";
	var zip = cordova.file.externalRootDirectory + filename;  // filename : survey_voice_zip/...
	console.log("ZIP RECORD AND PHOTO: PHOTO ", " SOURCE: " + source ," TO: ", zip);
	window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory,function(directory) {
  	  	directory.getDirectory("survey_photo",{
			create : true,
			exclusive : false
		});
		directory.getDirectory("survey_voice_zip",{
			create : true,
			exclusive : false
		});
		window.resolveLocalFileSystemURL(source, function (fileSystem) {
			var reader = fileSystem.createReader();
			reader.readEntries( function (entries) {
				var entriesLength = entries.length;
				if( entriesLength==0  && (ZipNum==0 || Zipempty==ZipNum) ){
					$.mobile.loading("hide");
					ZipAction = false;
					navigator.notification.alert( '文件已全部上传!', null, '提示', '确定');
					return;
				} else {
					console.log("ZIP RECORD AND PHOTO: PHOTO ZIP => START");
					$.mobile.loading("show",{ text: "正在打包图片数据", textVisible: true, theme: "a", html: ""});
					Zeep.zip({
						from : source,
						to : zip
					}, callback , function(e) {
						console.log("zip error: ", e);
					}); 	
				}
			}, function (err) {
				console.log("ZIP RECORD AND PHOTO: PHOTO ZIP => SCAN FILES FAILED", err);
			}); 
		}, function (err) {
			console.log("ZIP RECORD AND PHOTO: PHOTO ZIPPED => FIALED", err);
		});
	});
}

将其他文件转化为ZIP文件

function startZip(dir, filename, callback) {
	var source = cordova.file.externalRootDirectory + "survey_voice/" + dir;
	var zip = cordova.file.externalRootDirectory + filename;
	console.log("ZIP RECORD AND PHOTO: RECORD ", " SOURCE: " + source ," TO: ", zip);
	window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory,function(directory) {
  	  var newDir = directory.getDirectory("survey_voice_zip",{
			create : true,
			exclusive : false
		});
	}); 
	window.resolveLocalFileSystemURL(source, function (fileSystem) {
	 	var reader = fileSystem.createReader();
	 	console.log(source)
	 	reader.readEntries( function (entries) {
	 		if(entries.length > 0){
	 			Zeep.zip({
	 				from : source,
	 				to : zip
	 			}, callback , function(e) {
	 				console.log("zip error: ", e);
	 			});
	 		} else {
//	 			Ziped++;
	 			Zipempty++;
//	 			if(Ziped==ZipNum || Ziped+Zipempty==ZipNum){
	 			if(Ziped+Zipempty==ZipNum){	
	 				startZipPhoto("survey_voice_zip/photo_"+new Date().getTime()+ ".zip", zipPhotoSuccess);
	 			}
	 			console.log(Ziped, Zipempty, ZipNum);
	 		}
	 	}, function (err) {
	 		console.log(11, err);
	 	}); 
	}, function (err) {
//		Ziped++;
		Zipempty++;
//		if(Ziped==ZipNum || Ziped+Zipempty==ZipNum){
		if( Ziped+Zipempty==ZipNum){
			startZipPhoto("survey_voice_zip/photo_"+new Date().getTime()+ ".zip", zipPhotoSuccess);
		}
		console.log("ERROR: NO SURVEY_RECORD_FOLDER", err);
	});
}

照相功能

function scanBarCode() { 
    navigator.camera.getPicture(onPhotoBarcodeSuccess, onFail,   
        {	quality: 100,   
            allowEdit: false,   
            destinationType: navigator.camera.DestinationType.FILE_URI
        }); 
}  

上传图片

function addFaceajax(faceId,viewerId, imagename){
	moveSuccess;

	toBase64(cordova.file.externalRootDirectory + "survey_face_recognition/"+ imagename+".jpg" , function(base64Img){
		  console.log("Base64code:" + base64Img);
		  jQuery.ajax({
				type : "POST",
				timeout : 180000,
				url : URL_FACE_ADD_FACE,
				crossDomain : true,
				beforeSend : function() {
					//$.mobile.showPageLoadingMsg();
				},
				complete : function() {
					//$.mobile.hidePageLoadingMsg();
				},
				data : {
					image1 : base64Img, //照片base64编码
					image1FileName: imagename +".jpg", // 图片名字
					faceId : faceId, // 人脸id
					userId: viewerId //访员id。某些访员有删除和查询人脸库的特权。
				},
				datatype : 'jsonp',
				success : function(response) {
					console.log("Add face:" + faceId + "success." + JSON.stringify(response));
				},
				error : function(XMLHttpRequest,textStatus,errorThrown) {
					var errMessage = surveyGetTime("timestamp") + "[ERROR Add face:" + faceId + "] status:"
		            + XMLHttpRequest.status + " readyState:" + XMLHttpRequest.readyState
		            + " textStatus:" + textStatus + " errorThrown: " + errorThrown;
		            writeLog(errMessage, "survey_log", localStorage.getItem("error_log"));
					console.log(XMLHttpRequest.status);
					console.log(XMLHttpRequest.readyState);
					console.log(textStatus);
					console.log("Add face:" + faceId + "error");
				}
		   }); // ajax
		  	
	});
}

创建录音文件

function startRecord(dir, filename) {
	window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function(directory) {
    	  var newDir = directory.getDirectory("survey_voice",{
  			create : true,
  			exclusive : false
  		},function(new_dir){
  			var nomedia = new_dir.getDirectory(".nomedia", {
  				create : true,
  				exclusive : false
  			}, null, function(err){
  				alert("create nomedia fail");
  	  			console.log("create nomedia fail: " + err.code);
  	  		});
  			var childDir = new_dir.getDirectory(dir, {
  				create : true,
  				exclusive : false
  			}, function(child_dir){
  				var encryptName = encodeURI(encodeURI(filename.slice(0,-4).split("").reverse().join(""))) + ".isurvey";
  				fileMediaName = cordova.file.externalRootDirectory + "survey_voice/" + child_dir.name + "/" + encryptName;
  				SurveyMedia = new Media(fileMediaName, mediaOnSuccess, mediaOnFail);
  				console.log("prepare" + fileMediaName);
  				SurveyMedia.startRecord();
  			}, function(err){
  				alert("创建 子文件夹 失败");
  				console.log("create directory fail: " + err.code);
  			});
  		},function(err){
  			alert("创建survey_voice失败");
  			console.log("create directory fail: " + err.code);
  		});
	});  
}

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零幺_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值