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