X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/152f7f3ad021620515d110271d025eb78d6da02f..refs/pull/5313/head:/resources/js/components/dropzone.js diff --git a/resources/js/components/dropzone.js b/resources/js/components/dropzone.js index 2b8b35081..920fe875f 100644 --- a/resources/js/components/dropzone.js +++ b/resources/js/components/dropzone.js @@ -1,5 +1,5 @@ import {Component} from './component'; -import {Clipboard} from '../services/clipboard'; +import {Clipboard} from '../services/clipboard.ts'; import { elem, getLoading, onSelect, removeLoading, } from '../services/dom'; @@ -15,6 +15,7 @@ export class Dropzone extends Component { this.isActive = true; this.url = this.$opts.url; + this.method = (this.$opts.method || 'post').toUpperCase(); this.successMessage = this.$opts.successMessage; this.errorMessage = this.$opts.errorMessage; this.uploadLimitMb = Number(this.$opts.uploadLimit); @@ -167,6 +168,9 @@ export class Dropzone extends Component { startXhrForUpload(upload) { const formData = new FormData(); formData.append('file', upload.file, upload.file.name); + if (this.method !== 'POST') { + formData.append('_method', this.method); + } const component = this; const req = window.$http.createXMLHttpRequest('POST', this.url, { @@ -177,10 +181,7 @@ export class Dropzone extends Component { if (this.readyState === XMLHttpRequest.DONE && this.status === 200) { upload.markSuccess(component.successMessage); } else if (this.readyState === XMLHttpRequest.DONE && this.status >= 400) { - const content = this.responseText; - const data = content.startsWith('{') ? JSON.parse(content) : {message: content}; - const message = data?.message || data?.error || content; - upload.markError(message); + upload.markError(window.$http.formatErrorResponseText(this.responseText)); } }, });