Я получаю запрос от своего работника облачного хранилища и хочу загрузить данные в облачное хранилище Google.Моя проблема в том, что я не могу извлечь тип содержимого из данных multipart / form-data, которые я получаю, чтобы загрузить его с правильным типом содержимого в GCS.
Когда я читаю запрос с помощью await req.formData()
Я могу get('file')
из formData, и он возвращает необработанные данные файла, которые мне нужны для GCS, но я не могу нигде увидеть нужный мне тип содержимого файла (я вижу его только при просмотре необработанных файлов).Тело запроса).
Вот мой (сокращенный) код:
event.respondWith((async () => {
const req = event.request
const formData = await req.formData()
const file = formData.get('file')
const filename = formData.get('filename')
const oauth = await getGoogleOAuth()
const gcsOptions = {
method: 'PUT',
headers: {
Authorization: oauth.token_type + ' ' + oauth.access_token,
'Content-Type': 'application/octet-stream' //this should by `'Content-Type': file.type`
},
body: file,
}
const gcsRes = await fetch(
`https://storage.googleapis.com/***-media/${filename}`,
gcsOptions,
)
if (gcsRes.status === 200) {
return new Response(JSON.stringify({filename}), gcsRes)
} else {
return new Response('Internal Server Error', {status: 500, statusText: 'Internal Server Error'})
}
})())
Напоминание - код является частью нашего рабочего кода cloudflare.
Мне кажется,это должно быть прямо, определяя тип файла, который вы извлекаете из данных multipart / form-data.Я что-то упустил?