Задать вопрос
@AnotherAnkor

Почему не добавляются изображения на страницу confluence?

Создал код для отправки создания страницы и добавления изображений на созданную страницу. Код отрабатывает успешно, но на странице изображений нет. Где я ошибся?
const axios = require('axios');
const fs = require('fs');
const path = require('path');
const FormData = require('form-data');
const https = require('https');
// Функция для отправки запросов с игнорированием ошибок сертификата
const httpsAgent = new require('https').Agent({ rejectUnauthorized: false });
const axiosInstance = axios.create({ httpsAgent });

// Функция для загрузки изображений на страницу
async function uploadImages(pageId, imageDirectory) {
  const images = fs.readdirSync(imageDirectory);

  for (const image of images) {
    const imageData = fs.readFileSync(`${imageDirectory}/${image}`);
    const file = fs.createReadStream(`${imageDirectory}/${image}`);

    const url = `${confluenceInstance}/rest/api/content/${pageId}/child/attachment`;
    const headers = {
      'Authorization': bearerToken,
      'Content-Type': 'multipart/form-data',
      'X-Atlassian-Token': 'no-check',
    };

    const data = new FormData();
    data.append('file', file);
    data.append('comment', `${image}`);

    try {
      await axios.post(url, data, { headers });
      console.log(`Uploaded image: ${image}`);
    } catch (error) {
      console.error(`Error uploading image ${image}:`, error);
      throw error;
    }
  }
}

// Функция для создания страницы
async function createPage(spaceKey, parentPageId, title, content) {
  try {
    const response = await axios.post(`${confluenceInstance}/rest/api/content`, {
      type: 'page',
      title: title,
      space: { key: spaceKey },
      body: { storage: { value: content, representation: 'storage' } },
      ancestors: [{ type: 'page', id: parentPageId }]
    }, {
      headers: {
        Authorization: bearerToken
      },
      httpsAgent: new (require('https')).Agent({ rejectUnauthorized: false }) // Игнорирование ошибок сертификата
    });

    const pageId = response.data.id;
    console.log(`Page created successfully with ID: ${pageId}`);

    return pageId;
  } catch (error) {
    console.error(`Error creating page: ${error.message}`);
    return null;
  }
}

// Вызов функций для создания страницы, загрузки изображений и добавления текста
async function createPageWithImages(spaceKey, parentPageId, title, content, imageDirectory, bearerToken) {
  const pageId = await createPage(spaceKey, parentPageId, title, content);
  if (pageId) {
    await uploadImages(parentPageId, imageDirectory);
  }
}

createPageWithImages(spaceKey, parentPageId, title, content, imageDirectory, bearerToken);
  • Вопрос задан
  • 169 просмотров
Подписаться 1 Сложный Комментировать
Решения вопроса 1
gogowq
@gogowq
Ozh domosh acha ozh
Замените эту строку:

await uploadImages(parentPageId, imageDirectory);

на эту

await uploadImages(pageId, imageDirectory);

Добавьте следующую строку в начало , чтобы определить переменную confluenceInstance:

const confluenceInstance = 'https://ваш-URL-Confluence';


ну и добавляем что то по типу такого

const bearerToken = 'ВАШ_ТОКЕН_ДОСТУПА_К_CONFLUENCE';
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы