uni-app #云存储# 使用阿里云存储的文件删除问题
uni-app #云存储# 使用阿里云存储的文件删除问题
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
问题
例如在表单中向阿里云存储上传图片,如果表单未保存,则阿里云存储上会产生已上传但未被使用的垃圾文件,请问这种文件怎么处理,怎么保证阿里云存储里的文件都是被使用的,而没有垃圾文件
可以上传成功之后往数据库写一条记录,使用了之后再把这个记录删掉。每天用定时任务清理比较旧的数据和文件
同问,
智密科技,专注于uniapp生态开发,拥有专职前端、安卓工程师、IOS工程师、硬件工程师、后端工程师、UI设计人员,提供Unaipp插件开发,app外包开发
两个解决方案:
1、上传到临时目录,保存表单的时候,执行一次文件移动操作,每天删除临时目录下的文件即可
2、上传文件时数据库写入一条记录,标记为未使用,保存表单的时候去修改数据库中标记,定时清理标记为未使用的文件即可
个人观点,仅供参考
联系微信 zhimitec
针对你提到的uni-app中使用阿里云存储进行文件删除的问题,这里提供一个示例代码,展示如何通过uni-app调用阿里云OSS(对象存储服务)的API来删除指定文件。假设你已经完成了阿里云OSS的SDK集成和必要的配置(如AccessKeyId、AccessKeySecret、Bucket名称和Region等)。
首先,确保你已经在uni-app项目中安装了阿里云OSS的SDK。如果没有安装,可以使用npm或yarn进行安装(注意:uni-app可能需要在HBuilderX中进行相关配置以支持npm包)。
# 假设你使用的是npm
npm install ali-oss --save
接下来,在你的uni-app项目中创建一个服务文件,比如aliyun-oss.js
,用于封装与阿里云OSS交互的逻辑。
// aliyun-oss.js
const OSS = require('ali-oss');
const client = new OSS({
region: '<Your Region>',
accessKeyId: '<Your AccessKeyId>',
accessKeySecret: '<Your AccessKeySecret>',
bucket: '<Your Bucket Name>'
});
export function deleteFile(fileName) {
return new Promise((resolve, reject) => {
client.delete(fileName).then(response => {
resolve(response); // 删除成功,返回响应
}).catch(error => {
reject(error); // 删除失败,抛出错误
});
});
}
然后,在你的页面或组件中引入并使用这个封装好的删除文件函数。
// pages/index/index.vue
<template>
<view>
<button @click="deleteFromOSS('path/to/your/file.jpg')">删除文件</button>
</view>
</template>
<script>
import { deleteFile } from '@/common/aliyun-oss.js'; // 根据实际路径调整
export default {
methods: {
async deleteFromOSS(fileName) {
try {
const response = await deleteFile(fileName);
console.log('文件删除成功:', response);
uni.showToast({
title: '删除成功',
icon: 'success'
});
} catch (error) {
console.error('文件删除失败:', error);
uni.showToast({
title: '删除失败',
icon: 'none'
});
}
}
}
}
</script>
以上代码展示了如何在uni-app中集成阿里云OSS并删除指定文件。请确保你已经正确配置了阿里云OSS的相关信息,并且文件路径是正确的。如果遇到权限问题,请检查你的AccessKeyId、AccessKeySecret以及OSS的Bucket权限设置。