图片上传阿里云

随着手机摄像头像素变大,很多图片都超过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);
相关推荐
知识浅谈43 分钟前
OpenClaw保姆级安装教程:基于ubuntu系统
linux·ubuntu·node.js
月弦笙音1 小时前
【Node】操作磁盘文件底层原理:从「点外卖」到「厨房流水线」
node.js
真夜4 小时前
从Go工具到Vite插件:参考esbuild案例打造前端自动化部署神器
前端框架·node.js·go
泉城嵌入式5 小时前
从嵌入式开发工程师角度了解前端开发与后端开发
node.js
AIFarmer5 小时前
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确, 然后再试一次。
前端·npm·node.js
热爱专研AI的学妹5 小时前
Claude Code 完全使用指南:从入门到高效 AI 编程实战
大数据·人工智能·阿里云·语言模型
DolitD7 小时前
新品发布 | 点量VR同屏:为VR场景打造实时可视化的无线协同方案
实时互动·云计算·交互·vr·教学培训
翼龙云_cloud8 小时前
腾讯云代理商:如何为腾讯云部署的 OpenClaw 配置多 Agent?
人工智能·云计算·腾讯云·openclaw
TG_yunshuguoji8 小时前
腾讯云代理商:腾讯云部署OpenClaw 如何接入自定义大模型?
服务器·云计算·腾讯云·openclaw
网络点点滴9 小时前
Node.js路由知识
node.js