это мое первое сообщение о переполнении стека, поэтому, пожалуйста, go спокойно на меня!
Я создаю приложение для записи звука, используя EXPO в качестве SDK с React Native. Одной из основных функций приложения является возможность записи живого звука, а также загрузка звука с устройства клиента. Используя Audio API и FileSystem в Expo, я успешно могу записывать и сохранять живое аудио, а затем извлекать его через FileSystem для загрузки, однако у меня возникает ошибка при попытке передать localUri для загрузки в мою облачную базу данных. Существует очень мало документации в отношении передачи аудио и аудио в облачные системы, которые объединены с загрузкой видео, поэтому нет ничего такого, что указывало бы c, чтобы действительно указать мне правильное направление. Я пытался преобразовать URI в base64, а также различные типы MIME, но ответ Cloudinary с защищенным URL-адресом возвращает пустое / неопределенное значение. Я успешно загрузил изображения с помощью этого метода, чтобы вы могли представить, как это разочаровывает. Вот мой код, который захватывает запись и пытается загрузить ее в Cloudinary:
DocumentPicker.getDocumentAsync({
type: '*/*',
copyToCacheDirectory: true,
base64: true
})
.then(succ => {
//check out the saved info
console.log(succ, `path: ${succ.uri}, type: ${succ.type}, name: ${succ.id}, size: ${succ.size}`)
let Base64 = {/* Truncated Base64 object*/};
let base64Aud = `data:audio/x-wav;base64, ${Base64.encode(succ.uri)}`;
let cloud = `https://api.cloudinary.com/v1_1/${CLOUD_NAME}/upload`;
const data = {
'file': base64Aud,
'upload_preset': CLOUDINARY_UPLOAD_PRESET,
'resource_type': 'video',
}
fetch(cloud, {
body: JSON.stringify(data),
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
method: 'POST',
})
.then(async r => {
let data = await r.json()
console.log('cloudinary url:', data.secure_url)
return data.secure_url
})
.catch(err => console.log(err))
}
Этот вызов выводит на консоль следующее:
Object {
"name": "20200117_143416.mp4",
"size": 519612343,
"type": "success",
"uri": "file:///data/user/0/host.exp.exponent/cache/ExperienceData/%2540anonymous%252Faloud-aaf24bff-8000-47f0-9d1c-0893b81c3cbc/DocumentPicker/c922deb7-fd4f-42d9-9c28-d4f1b4990a4c.mp4",
} path: file:///data/user/0/host.exp.exponent/cache/ExperienceData/%2540anonymous%252Faloud-aaf24bff-8000-47f0-9d1c-0893b81c3cbc/DocumentPicker/c922deb7-fd4f-42d9-9c28-d4f1b4990a4c.mp4, type: success, name: undefined, size: 519612343
data:audio/x-wav;base64, ZmlsZTovLy9kYXRhL3VzZXIvMC9ob3N0LmV4cC5leHBvbmVudC9jYWNoZS9FeHBlcmllbmNlRGF0YS8lMjU0MGFub255bW91cyUyNTJGYWxvdWQtYWFmMjRiZmYtODAwMC00N2YwLTlkMWMtMDg5M2I4MWMzY2JjL0RvY3VtZW50UGlja2VyL2M5MjJkZWI3LWZkNGYtNDJkOS05YzI4LWQ0ZjFiNDk5MGE0Yy5tcDQ=
cloudinary url: undefined
Кто-нибудь видит какие-либо явные проблемы или имеет Любое понимание по этому вопросу? А еще лучше, успешно загрузить аудио в Cloudinary с клиента с помощью Expo & React Native? Спасибо!