fix(client): better error handling of file upload
This commit is contained in:
parent
1c6463e66f
commit
a902576334
1 changed files with 23 additions and 4 deletions
|
@ -563,13 +563,19 @@ export function post(props: Record<string, any>) {
|
||||||
|
|
||||||
export const deckGlobalEvents = new EventEmitter();
|
export const deckGlobalEvents = new EventEmitter();
|
||||||
|
|
||||||
export const uploads = ref([]);
|
export const uploads = ref<{
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
progressMax: number | undefined;
|
||||||
|
progressValue: number | undefined;
|
||||||
|
img: string;
|
||||||
|
}[]>([]);
|
||||||
|
|
||||||
export function upload(file: File, folder?: any, name?: string) {
|
export function upload(file: File, folder?: any, name?: string) {
|
||||||
if (folder && typeof folder == 'object') folder = folder.id;
|
if (folder && typeof folder == 'object') folder = folder.id;
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const id = Math.random();
|
const id = Math.random().toString();
|
||||||
|
|
||||||
const reader = new FileReader();
|
const reader = new FileReader();
|
||||||
reader.onload = (e) => {
|
reader.onload = (e) => {
|
||||||
|
@ -593,8 +599,21 @@ export function upload(file: File, folder?: any, name?: string) {
|
||||||
|
|
||||||
const xhr = new XMLHttpRequest();
|
const xhr = new XMLHttpRequest();
|
||||||
xhr.open('POST', apiUrl + '/drive/files/create', true);
|
xhr.open('POST', apiUrl + '/drive/files/create', true);
|
||||||
xhr.onload = (e: any) => {
|
xhr.onload = (ev) => {
|
||||||
const driveFile = JSON.parse(e.target.response);
|
if (ev.target == null || ev.target.response == null) {
|
||||||
|
// TODO: 消すのではなくて再送できるようにしたい
|
||||||
|
uploads.value = uploads.value.filter(x => x.id != id);
|
||||||
|
|
||||||
|
alert({
|
||||||
|
type: 'error',
|
||||||
|
text: 'upload failed'
|
||||||
|
});
|
||||||
|
|
||||||
|
reject();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const driveFile = JSON.parse(ev.target.response);
|
||||||
|
|
||||||
resolve(driveFile);
|
resolve(driveFile);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue