图片上传阿里云

随着手机摄像头像素变大,很多图片都超过5兆,所以阿里云默认的nginx最大上传5兆,不够使用了。所以需要重新设置nginx上传图片最大值。修改文件nginx.conf(我们的是/usr/local/nginx/conf/nginx.conf 不同的系统版本文件位置不同)。

http {这里增加一行代码:client_max_body_size 50M; # 添加这一行具体多大自己控制。若要上传视频,需要设置的更大。我见到一个网站一个视频都要800多兆。

配置:

复制代码
const OSSURL = 'https://test.oss-cn-hangzhou.aliyuncs.com';
const OSS = require('ali-oss');
const ossHZ = new OSS({
    region: 'oss-cn-hangzhou',
    accessKeyId: FspConstant.ACCESS_KEY_ID,
    accessKeySecret: FspConstant.ACCESS_KEY_SECRET,
    bucket: 'bucket节点名',
});

核心上传代码很简单:

复制代码
await ossHZ.putStream(filename, readStream);

上传具体代码:

复制代码
ImageTool.uploadImage = async function(filename, fileExt, readStream, convertedPath, originalPath) {
    try {
        await ossHZ.putStream(filename, readStream);
        // 删除临时转换文件
        if(convertedPath && fs.existsSync(convertedPath)){
            fs.unlinkSync(convertedPath);
        }
        if(fs.existsSync(originalPath)){
            fs.unlinkSync(originalPath);
        }
        return {
            code: 200,
            data: {
                data: {
                    url: OSSURL + filename,
                    // src: urlPath,
                    originalFormat: fileExt
                }
            }
        };
    } catch (error) {
        // 删除临时转换文件
        if(convertedPath && fs.existsSync(convertedPath)){
            fs.unlinkSync(convertedPath);
        }
        if(originalPath && fs.existsSync(originalPath)){
            fs.unlinkSync(originalPath);
        }
        console.error('上传失败:', error);
        throw msgCode[39522]('上传');
    }
};

调用代码:

复制代码
    // 获取文件扩展名
    const fileExt = path.extname(ctx.req.file.originalname).toLowerCase();
    let convertedPath = null;    
            // 支持的格式,直接上传原文件
        const readStream = fs.createReadStream(ctx.req.file.path);
        let arr = ctx.req.file.path.split('/');
        let filename = '/img/' + arr[arr.length - 1];
        return ImageTool.uploadImage(filename, fileExt, readStream, null, ctx.req.file.path);
相关推荐
AKAMAI3 小时前
Akamai Cloud客户案例 | IPPRA的简洁、经济、易用的云计算服务
人工智能·云计算
WangHappy5 小时前
出海不愁!用Vue3 + Node.js + Stripe实现全球支付
前端·node.js
该用户已不存在5 小时前
Node.js后端开发必不可少的7个核心库
javascript·后端·node.js
The star"'6 小时前
02-Ansible 基本使用
运维·云计算·ansible
wanhengidc6 小时前
巨 椰 云手机 满足多元需求
运维·服务器·安全·智能手机·云计算
小邋遢2.011 小时前
vscod 执行npm build报错:Error: Cannot find module ‘vite‘
前端·npm·node.js
TsengOnce11 小时前
阿里云ECS多版本JDK切换
java·python·阿里云
wanhengidc11 小时前
云手机 开发测试中的便捷工具
运维·服务器·科技·智能手机·云计算
孟陬13 小时前
2025-12-11 之后前端 npm 如何发包 How to Publish NPM Package in Year 2025
npm·node.js·bun