single file upload
This commit is contained in:
parent
5c60f4ac09
commit
c5c9139db2
@ -3,7 +3,6 @@ import { md5Generate } from '../../src/utils/md5'
|
||||
import { baseURL } from '@/utils/constants'
|
||||
import store from '@/store'
|
||||
|
||||
/* eslint-disable no-debugger */
|
||||
export async function fetch(url) {
|
||||
url = removePrefix(url)
|
||||
|
||||
@ -92,14 +91,24 @@ export async function post(url, content = '', overwrite = false, onupload) {
|
||||
bufferContent = await new Response(content).arrayBuffer()
|
||||
}
|
||||
|
||||
let partialUpload = function partialUpload(url, params, content) {
|
||||
let partialUpload = function partialUpload(url, paramsObj, content) {
|
||||
if (typeof paramsObj !== "object") {
|
||||
paramsObj = {};
|
||||
}
|
||||
let params = '&' + Object.keys(paramsObj).map(key => key + '=' + paramsObj[key]).join('&');
|
||||
let warpOnUpload = function (event) {
|
||||
let chunckedLoaded = event.loaded + (paramsObj.chunckIndex - 1) * paramsObj.chunkSize;
|
||||
let obj = {
|
||||
loaded: chunckedLoaded
|
||||
}
|
||||
return onupload(obj);
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
debugger;
|
||||
let request = new XMLHttpRequest()
|
||||
request.open('POST', `${baseURL}/api/resources${url}?override=${overwrite}${params}`, true)
|
||||
request.setRequestHeader('X-Auth', store.state.jwt)
|
||||
if (typeof onupload === 'function') {
|
||||
request.upload.onprogress = onupload
|
||||
request.upload.onprogress = warpOnUpload
|
||||
}
|
||||
|
||||
request.onload = () => {
|
||||
@ -122,7 +131,7 @@ export async function post(url, content = '', overwrite = false, onupload) {
|
||||
|
||||
if (!content) {
|
||||
//create folder or create new file
|
||||
await partialUpload(url, "", content)
|
||||
await partialUpload(url, {}, content)
|
||||
return;
|
||||
}
|
||||
|
||||
@ -147,8 +156,10 @@ export async function post(url, content = '', overwrite = false, onupload) {
|
||||
}
|
||||
fileContent = blobSlice.call(allContent, startIndex, endInex);
|
||||
|
||||
debugger;
|
||||
let params = `&fileID=${fileID}&chunckIndex=${index + 1}&totalChunck=${totalChunks}`
|
||||
let params = {
|
||||
fileID: fileID, chunckIndex: index + 1, totalChunck: totalChunks, chunkSize: chunkSize
|
||||
}
|
||||
|
||||
await partialUpload(url, params, fileContent).then(() => {
|
||||
tryCount = 0;
|
||||
}).catch(err => {
|
||||
|
||||
@ -6,12 +6,9 @@ const getters = {
|
||||
isPreview: state => state.previewMode,
|
||||
selectedCount: state => state.selected.length,
|
||||
progress : state => {
|
||||
/* eslint-disable no-debugger */
|
||||
|
||||
if (state.upload.progress.length == 0) {
|
||||
return 0;
|
||||
}
|
||||
debugger;
|
||||
let sum = state.upload.progress.reduce((acc, val) => acc + val)
|
||||
return Math.ceil(sum / state.upload.size * 100);
|
||||
}
|
||||
|
||||
@ -12,10 +12,8 @@ const state = {
|
||||
queue: [],
|
||||
uploads: {}
|
||||
}
|
||||
/* eslint-disable no-debugger */
|
||||
const mutations = {
|
||||
setProgress(state, { id, loaded }) {
|
||||
debugger;
|
||||
Vue.set(state.progress, id, loaded)
|
||||
},
|
||||
reset: (state) => {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user