uni-app #云存储# 使用阿里云存储的文件删除问题

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app #云存储# 使用阿里云存储的文件删除问题

开发环境 版本号 项目创建方式

问题

例如在表单中向阿里云存储上传图片,如果表单未保存,则阿里云存储上会产生已上传但未被使用的垃圾文件,请问这种文件怎么处理,怎么保证阿里云存储里的文件都是被使用的,而没有垃圾文件

4 回复

可以上传成功之后往数据库写一条记录,使用了之后再把这个记录删掉。每天用定时任务清理比较旧的数据和文件


智密科技,专注于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权限设置。

回到顶部