refactor(deps): migrate to nuxt v4
This commit is contained in:
50
app/composables/useFileGo.ts
Normal file
50
app/composables/useFileGo.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { useFetchWrapped } from './useFetchWrapped'
|
||||
import { useLoginState } from './useLoginState'
|
||||
|
||||
const putOSS = (file: File, signed_url: string) =>
|
||||
new Promise<void>((resolve, reject) => {
|
||||
let xhr = new XMLHttpRequest()
|
||||
xhr.open('PUT', signed_url as string)
|
||||
xhr.setRequestHeader('Content-Type', '')
|
||||
xhr.onload = () => {
|
||||
if (xhr.status === 200) {
|
||||
resolve()
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
}
|
||||
xhr.onerror = reject
|
||||
xhr.send(file)
|
||||
})
|
||||
|
||||
export const useFileGo = (
|
||||
file: File,
|
||||
type: 'material' | 'ppt' | 'subtitles' | 'preview' | 'tmp'
|
||||
) =>
|
||||
new Promise<string>((resolve, reject) => {
|
||||
useFetchWrapped<req.file.Upload & AuthedRequest, BaseResponse<string>>(
|
||||
'App.Tools_Upload.DirectUpload',
|
||||
{
|
||||
token: useLoginState().token!,
|
||||
user_id: useLoginState().user.id,
|
||||
file_name: file.name,
|
||||
file_type: type,
|
||||
file_size: file.size,
|
||||
file_mime: file.type,
|
||||
}
|
||||
)
|
||||
.then(async (res) => {
|
||||
if (res.data !== '') {
|
||||
try {
|
||||
await putOSS(file, res.data)
|
||||
let url = res.data.split('?')[0]
|
||||
resolve(url)
|
||||
} catch (err) {
|
||||
reject(err)
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user