filecache

This commit is contained in:
cansnow
2025-12-27 07:08:30 +08:00
parent 974d149d25
commit 09c7889525
54 changed files with 10485 additions and 164 deletions
@@ -31,11 +31,7 @@
return {
loadingWidth: "120px",
maxHeight:'120px',
src:"",
coverCachePath:"",
coverDownloading:false,
coverExists:false,
coverDownloadProgress:"",
src:""
};
},
computed: {
@@ -52,40 +48,11 @@
methods: {
async init(){
const self = this;
let url = "";
// 如果有远程 snapshotUrl,则下载到 coverCachePath
const snapshotUrl = this.message.FaceElem.data;
const key = md5(snapshotUrl || '');
this.coverCachePath = `_doc/${this.conversationID}/face_${key}.jpg`;
if (typeof plus === 'undefined' || !this.coverCachePath) return;
try {
// 检查封面是否存在
const coverExists = await util.fileExsit(self.coverCachePath);
this.coverExists = !!coverExists;
if (this.coverExists) {
this.src = this.coverCachePath;
return;
}
if (!snapshotUrl) {
this.src="/static/images/sync_error.png";
return;
}
this.coverDownloading = true;
await new Promise((resolve, reject) => {
util.downloadFile(snapshotUrl, self.coverCachePath, function(localPath) {
self.coverDownloading = false;
self.coverExists = true;
resolve(localPath);
}, function(err) {
self.coverDownloading = false;
reject(err);
}, function(progress) {
self.coverDownloadProgress = progress;
});
});
} catch (e) {
this.coverDownloading = false;
}
// 检查封面是否存在
util.cacheFile(snapshotUrl,'face').then((fn)=>{
self.src = fn;
});
},
onLoaded() {
this.loadingWidth = "auto";
@@ -28,7 +28,6 @@
<script>
import util from "@/util"
import md5 from "md5";
export default {
name: "LocationMessageRender",
components: {},
@@ -78,23 +77,14 @@
},
async init(){
const self = this;
let url = "";
// 如果有远程 snapshotUrl,则下载到 coverCachePath
const snapshotUrl = this.apisrc ;
const key = md5(snapshotUrl || '');
const dir_name = `${this.conversationID}`;
const save_file_name = `loc_${key}.png`;
const coverCachePath = `${dir_name}/${save_file_name}`;
if (typeof plus === 'undefined' || !coverCachePath) return;
self.coverDownloading = true;
util.cacheFile(snapshotUrl,coverCachePath,(fn)=>{
util.cacheFile(snapshotUrl,dir_name).then((fn)=>{
self.coverDownloading = false;
self.getImageInfo(fn);
//console.log(fn);
},(e)=>{
console.log(e);
},(e)=>{
console.log(e);
});
},
clickMediaItem() {
@@ -33,7 +33,7 @@
conversationID:String,
},
data() {
//console.log(this.message);
console.log(this.message);
return {
loadingWidth: "120px",
src:"",
@@ -60,23 +60,18 @@
let url = "";
// 如果有远程 snapshotUrl,则下载到 coverCachePath
const snapshotUrl = (this.message.pictureElem.snapshotPicture?.url ?? this.message.pictureElem.sourcePath );
const key = md5(snapshotUrl || '');
this.coverCachePath = `${this.conversationID}/img_${key}.jpg`;
util.cacheFile(snapshotUrl,this.coverCachePath,(e)=>{
//console.log(snapshotUrl);
util.cacheFile(snapshotUrl,`${this.conversationID}`).then((fn)=>{
self.coverDownloading = false;
self.src = coverCachePath;
console.log(e);
},(e)=>{
console.log(e);
},(e)=>{
console.log(e);
self.src = fn;
console.log(fn);
});
},
clickMediaItem() {
uni.previewImage({
current: 0,
//urls: [this.message.pictureElem.sourcePicture.url],
urls: ["_doc/"+this.coverCachePath],
urls: [this.src],
indicator: "none",
});
},
@@ -116,21 +116,12 @@
},
methods: {
async init(){
// 如果有远程 snapshotUrl,则下载到 coverCachePath
const snapshotUrl = this.message?.videoElem?.snapshotUrl;
const key = md5(this.message?.videoElem?.videoUrl || '');
const coverCachePath = `${this.conversationID}/cover_${key}.jpg`;
this.videoCachePath = `${this.conversationID}/${key}.mp4`;
this.videoExists = await util.fileExists(this.videoCachePath);
self.coverDownloading = true;
util.cacheFile(snapshotUrl,coverCachePath,(e)=>{
util.cacheFile(snapshotUrl,`${this.conversationID}`).then((fn)=>{
self.coverDownloading = false;
self.src = coverCachePath;
console.log(e);
},(e)=>{
console.log(e);
},(e)=>{
console.log(e);
self.src = fn;
console.log(fn);
});
},
clickMediaItem() {
@@ -145,10 +136,6 @@
},
onOverlayClick() {
// 点击覆盖层:如果视频已缓存则直接播放,否则开始下载
if (this.videoExists) {
this.playVideo("_doc/"+this.videoCachePath);
return;
}
const url = this.message?.videoElem?.videoUrl || this.message?.videoElem?.videoPath;
if (!url) {
uni.showToast({ title: '无可下载的视频' });
@@ -156,15 +143,12 @@
}
this.videoDownloading = true;
this.videoDownloadProgress = 0;
util.downloadFile(url, this.videoCachePath, (localPath) => {
util.downloadFile(url, `${this.conversationID}`, (prog) => {
//this.videoDownloadProgress = prog;
}).then((fn) => {
this.videoDownloading = false;
this.videoExists = true;
this.playVideo("_doc/"+localPath);
}, (err) => {
this.videoDownloading = false;
uni.showToast({ title: '下载失败' });
}, (prog) => {
this.videoDownloadProgress = prog;
this.playVideo(fn);
});
},
@@ -47,20 +47,10 @@
//console.log(this.message);
const self = this;
let audio = this.message.soundElem;
//soundPath
// 如果有远程 snapshotUrl,则下载到 cachePath
const snapshotUrl = audio.sourceUrl;
const key = md5(snapshotUrl || '');
const save_file_name = `audio_${key}.${audio.soundType}`;
const cachePath = `${this.conversationID}/${save_file_name}`;
if (typeof plus === 'undefined' || !cachePath) return;
util.cacheFile(snapshotUrl,cachePath,(fn)=>{
util.cacheFile(snapshotUrl,`${this.conversationID}`).then((fn)=>{
self.src = fn;
//console.log(fn);
},(e)=>{
console.log(e);
},(e)=>{
console.log(e);
});
},
handleAudio(){