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 ?
Итак, подписанный 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