阿里云 OSS 如何通过 Node.js 上传图片 #49

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 阿里云 OSS 如何通过 Node.js 上传图片 #49
const multiparty = require('multiparty');
require('../../conf/util.js');
require('../../conf/oss.js');
const fs = require('fs');
const fsE = require('fs-extra');
global.router.put(`${global.api}uploadAvatar`, function (req, res) {
    let datas = {};
    const {
        account,
        avatar
    } = req.session;
    if (!(fs.existsSync(global.location + account))) {
        fs.mkdir(global.location + account);
    }
    const form = new multiparty.Form({
        uploadDir: global.location + account
    });
    form.parse(req, function (err, fields, files) {
        let filesTmp = files.filedata;
        filepath = filesTmp[0].path;
        const img = filesTmp[0].path.split('/')[2];
        const result = put(filepath, account, img);
        result.then((value) => {
            if (value.res.statusCode === 200) {
                let updateSql = 'UPDATE users SET avatar = ? WHERE account = ?;';
                let newAvatar = `//img.downfuture.com/${account}/${img}-avatar2`;
                req.getConnection(function (err, conn) {
                    conn.query(`${updateSql}`, [newAvatar, account], function (err, result) {
                        unlinkFile(account);
                        if (avatar.indexOf('user.png') == -1) {
                            let bucket = avatar.split('/')[3] + '/' + avatar.split('/')[4];
                            deleteFile(bucket.split('-')[0]);
                        }
                        req.session.avatar = newAvatar;
                        datas.avatar = newAvatar;
                        datas.code = 200;
                        res.json(datas);
                    });
                });
            } else {
                unlinkFile(account);
                // fix:错误回参不对,需要给到具体报错参数
                datas.avatar = '//img.downfuture.com/images/user.png';
                datas.error = value;
                datas.code = 500;
                res.json(datas);
            }
        });
    });
});
function unlinkFile(account) {
    fsE.remove(global.location + account);
}
async function deleteFile(bucket) {
    try {
        const result = await ossClient.delete(bucket);
    } catch (err) {
        console.error(err);
    }
}
async function put(filepath, account, img) {
    try {
        let result = await ossClient.put(`${account}/${img}`, filepath);
        return result;
    } catch (err) {
        return err;
    }
}
module.exports = global.router;
相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
目录
相关文章
|
1月前
|
存储 人工智能 Cloud Native
阿里云渠道商:OSS与传统存储系统的差异在哪里?
本文对比传统存储与云原生对象存储OSS的架构差异,涵盖性能、成本、扩展性等方面。OSS凭借高持久性、弹性扩容及与云服务深度集成,成为大数据与AI时代的优选方案。
|
3月前
|
存储 运维 安全
阿里云国际站OSS与自建存储的区别
阿里云国际站对象存储OSS提供海量、安全、低成本的云存储解决方案。相比自建存储,OSS具备易用性强、稳定性高、安全性好、成本更低等优势,支持无限扩展、自动冗余、多层防护及丰富增值服务,助力企业高效管理数据。
|
3月前
|
存储 域名解析 前端开发
震惊!不买服务器,还可以用阿里云国际站 OSS 轻松搭建静态网站
在数字化时代,利用阿里云国际站OSS可低成本搭建静态网站。本文详解OSS优势及步骤:创建Bucket、上传文件、配置首页与404页面、绑定域名等,助你快速上线个人或小型业务网站,操作简单,成本低廉,适合初学者与中小企业。
|
9月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
9月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
8月前
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
9月前
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
240 0
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
下一篇
oss云网关配置