Копирование изображений из одной папки в другую в пространствах digitalocean - PullRequest
2 голосов
/ 30 мая 2020

Я работаю с цифровыми океанскими пространствами и загрузил изображения во временную папку. Теперь я хочу переместить это изображение из временной папки в постоянную. Я обыскал вещи отовсюду, но ничего особенного не нашел. Возможно ли это сделать? и если да, пожалуйста, помогите мне с кодом javascript.

Сначала я сгенерировал подписанный URL-адрес и с помощью этого подписанного URL-адреса загрузил изображение на пространствах digitalocean. Ниже приведен код для создания подписанного URL-адреса и загрузки изображений.

const getSignedUrl = async () => {
    const body = {
        fileName: 'temp/' + file.name,
        fileType: file.type,
    }

    const response = await fetch(`${API_URL}/presigned_url`, {
        method: 'POST',
        body: JSON.stringify(body),
        headers: { 'Content-Type': 'application/json' }
    })
    const { signedUrl } = await response.json()

    return signedUrl
}

const uploadFile = async signedUrl => {
    const res = await fetch(signedUrl, {
        method: 'PUT',
        body: file,
        headers: {
            'Content-Type': file.type,
            'x-amz-acl': 'public-read',
        }
    })
    return res
}

пожалуйста, помогите мне, как мне переместить мое изображение из временной папки в постоянную папку.

1 Ответ

2 голосов
/ 03 июня 2020

Итак, наконец, после поиска я получил ответ: со стороны внешнего интерфейса я вызываю API, чтобы скопировать мое изображение

const copyFile = async (file) => {
    try {
        const body = {
            fileName: file.name
        }
        const res = await fetch(`${API_URL}/copy_file`, {
            method: 'PUT',
            body: JSON.stringify(body),
            headers: { 'Content-Type': 'application/json' }
        })
        return res
    } catch (error) {
        console.log(error);
    }
}

А на стороне сервера API, который я создал,

app.put('/copy_file', (req, res) => {
    const fileName = req.body.fileName
    console.log("body", fileName);
    const params = {
        Bucket: config.spaces.spaceName,
        CopySource: `/bucketName/temp/${fileName}`,
        Key: `original/${fileName}`,
    }
    spaces.copyObject(params, function (err, data) {
        if (err) {
            console.log("Error", err)
            // console.log(err, err.stack); // an error occurred
        } else {
            res.json({ data })
        }
    });
});

Это скопирует ваше изображение в исходную папку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...