Почему загрузка файлов изображений в MinIO заканчивается размером 0 байт (с помощью клиента загрузки Apollo) - PullRequest
0 голосов
/ 29 октября 2019

У меня есть хранилище, которое содержит разные файлы. У меня нет проблем с загрузкой любых файлов в этом магазине, кроме файлов изображений. Я не могу понять, почему 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, и я хочу, чтобы изображения загружались правильно как другие файлы

...