Bladeren bron

增加post下载文件方式

sucheng 1 jaar geleden
bovenliggende
commit
ecd9e8c9d5
1 gewijzigde bestanden met toevoegingen van 62 en 29 verwijderingen
  1. 62 29
      pages/index/index.vue

+ 62 - 29
pages/index/index.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<web-view src="http://61.177.40.178:8001" @message="handleMessage"></web-view>
+		<web-view src="http://61.177.40.178:8000" @message="handleMessage"></web-view>
 		<!-- <button @click="downloadFile">点击下载文件</button> -->
 	</view>
 </template>
@@ -29,7 +29,7 @@
 			// this.downloadFile();
 		},
 		methods: {
-			
+
 			handleMessage(evt) {
 				console.log('原始信息:' + evt)
 				console.log('接收到的消息:' + JSON.stringify(evt));
@@ -51,12 +51,29 @@
 						});
 					} else if (data && data.type && data.type == 'file' && data.url && data.url != '' && data.fileName &&
 						data.fileName != '' && data.token && data.token != '') {
-						console.log("移动端文件下载通用方式")
+						//判断是否为POST请求
+						let isPost = false;
+						try {
+							let urlType = data.urlType;
+							let postRequest = data.postRequest;
+							if (urlType == 'POST') {
+								isPost = true;
+							}
+						} catch (e) {
+							isPost = false;
+						}
+
 						let url = data.url;
 						let fileName = data.fileName;
 						let token = data.token;
-						console.log('url:' + url);
-						this.downloadFile(url, fileName, token);
+						if (!isPost) {
+							console.log("移动端文件下载通用方式")
+							console.log('url:' + url);
+							this.downloadFile(url, fileName, token);
+						} else {
+							let postRequest = data.postRequest;
+							this.downloadPostFile(url, fileName, token, postRequest)
+						}
 					} else {
 						return;
 					}
@@ -84,21 +101,7 @@
 			// 	});
 			// },
 			downloadFile(_url, _name, _token) {
-				// let timestamp=Date.now()
-				// let URL=`${_url}?timestamp=${timestamp}`
-				// uni.getSavedFileList({
-				// 	success:function(res){
-				// 		console.log('4545',res);
-				// 		if(res.fileList.length>0){
-				// 			// res.fileList=[];
-				// 			console.log('77845',res);
-				// 			uni.removeSavedFile({
-				// 				filePath:res.fileList[0].filePath
-				// 			});
-				// 		}
-				// 	}
-				// })
-				 
+
 				uni.downloadFile({
 					url: _url, //文件链接
 					header: {
@@ -112,24 +115,25 @@
 								success: function(res) {
 									var savedFilePath = res.savedFilePath;
 									let lastSlashIndex = savedFilePath.lastIndexOf("/");
-									let name_index=_name.lastIndexOf('.');
-									let fileName=_name.slice(0,name_index)+Date.now()+_name.slice(name_index,_name.length)
+									let name_index = _name.lastIndexOf('.');
+									let fileName = _name.slice(0, name_index) + Date.now() + _name
+										.slice(name_index, _name.length)
 									var newFilePath = savedFilePath.slice(0, lastSlashIndex + 1) +
 										fileName;
 									console.log("download:" + savedFilePath)
 									console.log('修改之后的文件路径:' + newFilePath)
 									//修改名称
-									
+
 									plus.io.resolveLocalFileSystemURL(savedFilePath, entry => {
 										entry.getParent(_oldFile => {
-											entry.moveTo(_oldFile, '/' + fileName ,
+											entry.moveTo(_oldFile, '/' + fileName,
 												newFilePath => {
 													console.log('文件名称替换完成');
-													// console.log('000',newFilePath.fullPath);
+													console.log('000',newFilePath.fullPath);
 												})
-										}) 
+										})
 									})
-									setTimeout(()=>{
+									setTimeout(() => {
 										uni.openDocument({
 											filePath: newFilePath,
 											success() {
@@ -138,8 +142,8 @@
 											fail() {
 												console.log('打开失败');
 											}
-										}); 
-									},1000)
+										});
+									}, 1000)
 								}
 							});
 						}
@@ -153,6 +157,35 @@
 					},
 				})
 			},
+			downloadPostFile(_url, _name, _token, _data) {
+				let name_index = _name.lastIndexOf('.');
+				let fileName = "_doc/uniapp_save/"+ _name.slice(0, name_index) + Date.now() + _name
+										.slice(name_index, _name.length);
+				console.log('文件路径:'+fileName)
+				
+				var dtask = plus.downloader.createDownload(_url, {
+							filename: fileName, //利用保存路径,实现下载文件的重命名
+							method: 'POST',
+							data: _data
+						}, function(d, status) {
+							console.log("d====>", d)
+							console.log("status====>", status)
+							//d为下载的文件对象
+							if (status == 200) {
+								// var fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
+								plus.runtime.openFile(d.filename);	   //选择软件打开文件
+							} else {
+								//下载失败
+								plus.downloader.clear(); //清除下载任务
+								reject({data:d,status})
+							}
+						})
+						
+						dtask.setRequestHeader("token", _token) 
+						dtask.setRequestHeader("Content-Type", "application/json")
+						dtask.start(); //执行下载
+
+			},
 
 		}
 	}