Django - React - Загрузка Google Cloud Storage SigedURL не работает

Ранее я успешно использовал signedURL с jquery/ajax и Django для загрузки в Google Cloud Storage.

Однако с установкой Django - React мне пока не удалось установить успешную загрузку.

export const UploadVideo = async (form_data, file, signedurl, asset_uuid) => {
    let resultState = { state: '', data: {} };

    let config = {
        method: 'HOST',
        url: signedurl,
        headers: {
            'Content-Type': 'video/mp4',
            "Access-Control-Allow-Origin": "*",
            'Access-Control-Allow-Methods':'GET,PUT,POST,DELETE,PATCH,OPTIONS'
        },
        data: form_data
    };

    await axios(config).then(function (response) {
        console.log(JSON.stringify(response.data));
        resultState.state = 'success';
    }).catch(function (error) {
        resultState.state = 'error';
        resultState.data.message = error.message;
        window.toastr.error(error.message);

        console.log(error)
    })

    return resultState;
}

export const CreateAssets = async (data, key) => {
    let resultState = { state: '', data: {} };

    await axios.get(`https://origin/asset/create/?category=1&title=%22` + data[key].title + `%22&size=1`)
        .then(res => {
            resultState.state = 'success';
            resultState.data = res.data;
        }).catch((err) => {
            resultState.state = 'error';
            resultState.data['message'] = err.message;
        })
    return resultState;
}

Доступен код для react js получения singed url и вызова signedurl с файловым диалогом.

Что нужно сделать для успешной загрузки файла signedurl в Google Cloud Storage ?

enter image description here

Итак, подписанный url должен быть создан с помощью этой функции :

def get_signed_url_for_upload(path):
    blob = settings.STORAGE.bucket.blob(path)
    expiration_time = timezone.now() + timedelta(minutes=120)
    signed_url = blob.generate_signed_url(
        version="v4",
        # This URL is valid for 15 minutes
        expiration=timedelta(minutes=15),
        # Allow PUT requests using this URL.
        method="PUT",
        content_type="application/octet-stream",)
    return signed_url
Вернуться на верх