Я настраиваю функцию загрузки S3 с помощью koa(& serverless)
.Я сделал функцию загрузки S3, и она выглядит работающей.Но у него было сломано (? Или пусто) в корзине s3.как это. неработающее изображение
В моем проекте узла используется koa без сервера (здесь была выполнена настройка корзины).
Это мой package.json
{
// ...
"dependencies": {
"aws-sdk": "^2.464.0",
"dotenv": "^8.0.0",
"joi": "^14.3.1",
"koa": "^2.7.0",
"koa-body": "^4.1.0",
"koa-router": "^7.4.0",
"promise-mysql": "^3.3.2",
"serverless-http": "^2.0.2",
"serverless-offline": "^4.10.6"
},
// ...
}
А это мой app.js
const Koa = require('koa');
const koaBody = require('koa-body');
const routes = require('./api/index');
const app = new Koa();
app.use(koaBody({ multipart: true }));
app.use(routes.routes()).use(routes.allowedMethods());
app.use(ctx => {
ctx.body = 'hello world';
});
module.exports = app;
Это мой роутер
const Router = require('koa-router');
const auth = new Router();
const AWS = require('aws-sdk');
const S3 = new AWS.S3();
const fs = require('fs');
const BUCKET = 'chacha-s3-test';
auth.post('/image-up', async(ctx)=> {
const image = ctx.request.files.image;
const {
name, path, type
} = image
console.log('name :', name); //world.png
console.log('path :', path); //C:\<my local path>\upload_d7ac6297fa2d0fb09495695f1536a41a
console.log('type :', type); //image/png
const { key, url } = await putS3Object(
name,
path,
type,
).then(()=> getSignedUrl(name));
ctx.body = {key, url} // {}, no return..
})
function putS3Object(key, path, type) {
const stream = fs.createReadStream(path);
return S3.putObject({
Body: stream,
Bucket: BUCKET,
ContentType: type,
Key: key
}).promise();
}
function getSignedUrl(key) {
const params = {Bucket:BUCKET, Key: key};
return S3.getSignedUrl('getObject', params);
}
module.exports = auth;
Этот код может загрузить файл.Но изображение в с3 битое.И он не возвращает URL.
Файл изображения взят из React FormData e.target.files[0]
Нужно ли мне писать код реакции?
Я ожидал, что загруженный файл изображения в ведре s3 покажет мне оригинал (изображение карты мира).но это всего лишь небольшой квадрат и черный фон (хотя он имеет почти одинаковый размер (257,9 КБ)). битое изображение
Нет сообщений об ошибках.И файл изображения успешно загружен.но изображение в ведре s3 не работает.
Как это исправить?Пожалуйста, помогите.
Спасибо.Хорошего дня!