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.');
}
};