Apollo-upload-клиент с Cloudinary

Я пытаюсь загрузить изображения с помощью apollo-upload-client, graphql и cloudinary,

Цель: успешно загрузить изображение в облачную систему, получить облачный URL и вставить в базу данных.

Настоящее время: не появляется сообщение об ошибке, но файл не загружен в облачный каталог.

Справка: мой код ниже правильный? Кто-нибудь успешно внедрил решение с apollo-client-upload, graphql и cloudinary в своем коде? Как получить URL-адрес ответа из облачного хранилища, который я могу вставить в свою базу данных

До сих пор я тестировал загрузку на наш собственный локальный сервер, и код работает нормально. Я изолировал, и ошибка, вероятно, происходит из-под части

заранее спасибо

export const cloudinaryUpload = async ({ stream }: any): Promise<string> => {
  console.log("stream upload gql ", stream);
  cloudinary.config({
    cloud_name: process.env.cloud_name,
    api_key: process.env.CLOUDINARY_API_KEY,
    api_secret: process.env.CLOUDINARY_API_SECRET
  });

  cloudinary.uploader
    .upload_stream({ resource_type: "raw" }, function(error: any, result: any) {
      console.log("error ", error);
      console.log("result ", result);
    })
    .end(stream.buffer);

  return `Test`;
};



export const processUpload = async (upload: any) => {

  const { stream } = await upload;

  const { id } = await storeUpload({ stream });
  return `id`;

0 ответов

У меня были такие же проблемы, когда я выяснял, как передать файл в cloudinary, и столкнулся с этим вопросом здесь и на форумах поддержки Cloudinary.

Если кто-то еще испытывает трудности, вот решение: https://support.cloudinary.com/hc/en-us/community/posts/360031762832-graphql-upload-with-cloudinary

Вот что мне подходит:

const cloudinary = require('cloudinary').v2;
cloudinary.config({
  cloud_name: process.env.CLOUDINARY_CLOUDNAME,
  api_key: process.env.CLOUDINARY_API_KEY,
  api_secret: process.env.CLOUDINARY_API_SECRECT,
});

const imageUpload = async (imageFile) => {
  try {
    const { createReadStream } = await imageFile;
    const stream = createReadStream();
    const cloudinaryResponse = await cloudinary.uploader.upload(stream.path, { folder: 
'my-folder' });
    return cloudinaryResponse.eager[0].secure_url;
  } catch (error) {
    throw new Error('There was a problem uploading your image. Please try again.');
  }
};
Другие вопросы по тегам