У меня есть хранилище, которое содержит разные файлы. У меня нет проблем с загрузкой любых файлов в этом магазине, кроме файлов изображений. Я не могу понять, почему MinIO поместил, например, файлы pdf с фактическим размером в хранилище, и разрешил мне загрузить их и просмотреть, но поместил изображения с размером 0 в хранилище, и как только я их скачал, я не могу смотреть их, потому что они пусты
Я читаю тонны документации. Я пытался посмотреть, что я получаю на стороне клиента и что я кладу в магазин
Код компонента на стороне клиента
const [uploadFile, {loading}] = useMutation(UPLOAD_FILE, {
refetchQueries: [{
query: LOAD_FILES_FILTERED,
variables: {
mimetype_in
}
}]
});
...
<input
id="file-upload"
type="file"
accept=".jpg, .jpeg, .png, .gif, .svg, .pdf, .epub, .mp3, .mp4, .m3u8, .vtt, .zip"
style={{ display: 'none' }}
onChange={({
target: {
files: [file]
}
}) => {
if (file) {
console.log(file) || uploadFile({ variables: { file } }).then(data =>
setFileData(data.data.uploadFile)
);
}
}}
/>
Мутация на стороне сервера
...
async uploadFile(parent, { file }, context, info) {
return await processUpload(await file, context);
},
...
функция processUpload
exports.processUpload = async (upload, context) => {
if (!upload) {
return console.log("ERROR: No file received.");
}
const { createReadStream, filename, mimetype, encoding } = await upload;
const stream = createReadStream();
const objectName = uuid() + "-" + filename;
const bucketName = "sandbox";
await createBucket(bucketName);
await uploadFile(bucketName, objectName, stream);
...
функция uploadFile
const uploadFile = async (bucket, key, stream) => {
return new Promise(function(resolve, reject) {
minioClient.putObject(bucket, key, stream, function(err, etag) {
if (err) {
console.log(err, etag);
reject();
} else {
console.log("file uploaded");
resolve();
}
});
});
};
Теперь я получаю изображениефайлы в моем контейнере с размером 0, и я хочу, чтобы изображения загружались правильно как другие файлы