| 1 |
- {"remainingRequest":"E:\\item\\newItem\\admin\\node_modules\\babel-loader\\lib\\index.js!E:\\item\\newItem\\admin\\src\\utils\\upload.js","dependencies":[{"path":"E:\\item\\newItem\\admin\\src\\utils\\upload.js","mtime":1677828270373},{"path":"E:\\item\\newItem\\admin\\babel.config.js","mtime":1677828270071},{"path":"E:\\item\\newItem\\admin\\.babelrc","mtime":1677828270070},{"path":"E:\\item\\newItem\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\newItem\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkU6L2l0ZW0vbmV3SXRlbS9hZG1pbi9ub2RlX21vZHVsZXMvQHZ1ZS9iYWJlbC1wcmVzZXQtYXBwL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJyZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0IG1kNSBmcm9tICdqcy1tZDUnOyAvL+W8leWFpU1ENeWKoOWvhgoKaW1wb3J0IHsgdXBsb2FkIH0gZnJvbSAnQC9hcGkvdXBsb2FkLmpzJzsgLy8g6L+Z6YeM5oyH5YmN56uv6LCD55So5o6l5Y+j55qEYXBp5pa55rOVCgpleHBvcnQgdmFyIHVwbG9hZEJ5UGllY2VzID0gZnVuY3Rpb24gdXBsb2FkQnlQaWVjZXMoX3JlZikgewogIHZhciBmaWxlID0gX3JlZi5maWxlLAogICAgICBfcmVmJHBpZWNlU2l6ZSA9IF9yZWYucGllY2VTaXplLAogICAgICBwaWVjZVNpemUgPSBfcmVmJHBpZWNlU2l6ZSA9PT0gdm9pZCAwID8gMiA6IF9yZWYkcGllY2VTaXplLAogICAgICBzdWNjZXNzID0gX3JlZi5zdWNjZXNzLAogICAgICBlcnJvciA9IF9yZWYuZXJyb3IsCiAgICAgIHVwbG9hZGluZyA9IF9yZWYudXBsb2FkaW5nOwogIC8vIOWmguaenOaWh+S7tuS8oOWFpeS4uuepuuebtOaOpSByZXR1cm4g6L+U5ZueCiAgaWYgKCFmaWxlKSByZXR1cm47CiAgdmFyIGZpbGVNRDUgPSAnJzsgLy8g5oC75paH5Lu25YiX6KGoCgogIHZhciBjaHVua1NpemUgPSBwaWVjZVNpemUgKiAxMDI0ICogMTAyNDsgLy8gNU1C5LiA54mHCgogIHZhciBjaHVua0NvdW50ID0gTWF0aC5jZWlsKGZpbGUuc2l6ZSAvIGNodW5rU2l6ZSk7IC8vIOaAu+eJh+aVsAogIC8vIOiOt+WPlm1kNQoKICB2YXIgcmVhZEZpbGVNRDUgPSBmdW5jdGlvbiByZWFkRmlsZU1ENSgpIHsKICAgIC8vIOivu+WPluinhumikeaWh+S7tueahG1kNQogICAgY29uc29sZS5sb2coJ+iOt+WPluaWh+S7tueahE1ENeWAvCcpOwogICAgdmFyIGZpbGVSZWRlckluc3RhbmNlID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgIGNvbnNvbGUubG9nKCdmaWxlJywgZmlsZSk7CiAgICBmaWxlUmVkZXJJbnN0YW5jZS5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7CiAgICBmaWxlUmVkZXJJbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKGUpIHsKICAgICAgdmFyIGZpbGVCb2xiID0gZS50YXJnZXQucmVzdWx0OwogICAgICBmaWxlTUQ1ID0gbWQ1KGZpbGVCb2xiKTsKICAgICAgY29uc29sZS5sb2coJ2ZpbGVNRDUnLCBmaWxlTUQ1KTsKICAgICAgY29uc29sZS5sb2coJ+aWh+S7tuacquiiq+S4iuS8oO+8jOWwhuWIhueJh+S4iuS8oCcpOwogICAgICByZWFkQ2h1bmtNRDUoKTsKICAgIH0pOwogIH07CgogIHZhciBnZXRDaHVua0luZm8gPSBmdW5jdGlvbiBnZXRDaHVua0luZm8oZmlsZSwgY3VycmVudENodW5rLCBjaHVua1NpemUpIHsKICAgIHZhciBzdGFydCA9IGN1cnJlbnRDaHVuayAqIGNodW5rU2l6ZTsKICAgIHZhciBlbmQgPSBNYXRoLm1pbihmaWxlLnNpemUsIHN0YXJ0ICsgY2h1bmtTaXplKTsKICAgIHZhciBjaHVuayA9IGZpbGUuc2xpY2Uoc3RhcnQsIGVuZCk7CiAgICByZXR1cm4gewogICAgICBzdGFydDogc3RhcnQsCiAgICAgIGVuZDogZW5kLAogICAgICBjaHVuazogY2h1bmsKICAgIH07CiAgfTsgLy8g6ZKI5a+55q+P5Liq5paH5Lu26L+b6KGMY2h1bmvlpITnkIYKCgogIHZhciByZWFkQ2h1bmtNRDUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICB2YXIgaSwgX2dldENodW5rSW5mbywgY2h1bms7CgogICAgICByZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaSA9IDA7CgogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgaWYgKCEoaSA8IGNodW5rQ291bnQpKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIF9nZXRDaHVua0luZm8gPSBnZXRDaHVua0luZm8oZmlsZSwgaSwgY2h1bmtTaXplKSwgY2h1bmsgPSBfZ2V0Q2h1bmtJbmZvLmNodW5rOwogICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmgLvniYfmlbAnICsgY2h1bmtDb3VudCk7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WIhueJh+WQjueahOaVsOaNri0tLea1i+ivle+8micgKyBpKTsKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNzsKICAgICAgICAgICAgICByZXR1cm4gdXBsb2FkQ2h1bmsoewogICAgICAgICAgICAgICAgY2h1bms6IGNodW5rLAogICAgICAgICAgICAgICAgY3VycmVudENodW5rOiBpLAogICAgICAgICAgICAgICAgY2h1bmtDb3VudDogY2h1bmtDb3VudAogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0sIF9jYWxsZWUpOwogICAgfSkpOwoKICAgIHJldHVybiBmdW5jdGlvbiByZWFkQ2h1bmtNRDUoKSB7CiAgICAgIHJldHVybiBfcmVmMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgfTsKICB9KCk7CgogIHZhciB1cGxvYWRDaHVuayA9IGZ1bmN0aW9uIHVwbG9hZENodW5rKGNodW5rSW5mbykgewogICAgLy8gcHJvZ3Jlc3NGdW4oKQogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlciwgcmVqZWN0KSB7CiAgICAgIHZhciBjb25maWcgPSB7CiAgICAgICAgaGVhZGVyczogewogICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJwogICAgICAgIH0KICAgICAgfTsgLy8g5Yib5bu6Zm9ybURhdGHlr7nosaHvvIzkuIvpnaLmmK/nu5PlkIjkuI3lkIzpobnnm67nu5nlkI7nq6/kvKDlhaXnmoTlr7nosaHjgIIKCiAgICAgIHZhciBmZXRjaEZvcm0gPSBuZXcgRm9ybURhdGEoKTsKICAgICAgZmV0Y2hGb3JtLmFwcGVuZCgnY2h1bmtOdW1iZXInLCBjaHVua0luZm8uY3VycmVudENodW5rICsgMSk7IC8vIOesrOWHoOeJhwoKICAgICAgZmV0Y2hGb3JtLmFwcGVuZCgnY2h1bmtTaXplJywgY2h1bmtTaXplKTsgLy8g5YiG54mH5aSn5bCP55qE6ZmQ5Yi2ICDkvovlpoLpmZDliLYgNU0KCiAgICAgIGZldGNoRm9ybS5hcHBlbmQoJ2N1cnJlbnRDaHVua1NpemUnLCBjaHVua0luZm8uY2h1bmsuc2l6ZSk7IC8vIOavj+S4gOeJh+eahOWkp+WwjwoKICAgICAgZmV0Y2hGb3JtLmFwcGVuZCgnZmlsZScsIGNodW5rSW5mby5jaHVuayk7IC8v5q+P5LiA54mH55qE5paH5Lu2CgogICAgICBmZXRjaEZvcm0uYXBwZW5kKCdmaWxlbmFtZScsIGZpbGUubmFtZSk7IC8vIOaWh+S7tuWQjQoKICAgICAgZmV0Y2hGb3JtLmFwcGVuZCgndG90YWxDaHVua3MnLCBjaHVua0luZm8uY2h1bmtDb3VudCk7IC8v5oC754mH5pWwCgogICAgICBmZXRjaEZvcm0uYXBwZW5kKCdtZDUnLCBmaWxlTUQ1KTsKICAgICAgdXBsb2FkKGZldGNoRm9ybSwgY29uZmlnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICBjb25zb2xlLmxvZygn5YiG54mH5LiK5Lyg6L+U5Zue5L+h5oGv77yaJywgcmVzKTsKCiAgICAgICAgaWYgKHJlcy5kYXRhLmNvZGUgPT0gMSkgewogICAgICAgICAgLy8gLy8g57uT5ZCI5LiN5ZCM6aG555uuIOWwhuaIkOWKn+eahOS/oeaBr+i/lOWbnuWHuuWOuwogICAgICAgICAgLy8g5LiL6Z2i5aaC5p6c5Zyo6aG555uu5Lit5rKh5pyJ55So5Yiw5Y+v5Lul5LiN55So5omT5byA5rOo6YeKCiAgICAgICAgICB1cGxvYWRpbmcoY2h1bmtJbmZvLmN1cnJlbnRDaHVuayArIDEsIGNodW5rSW5mby5jaHVua0NvdW50KTsKICAgICAgICAgIHJlc29sdmVyKHRydWUpOwogICAgICAgIH0gZWxzZSBpZiAocmVzLmRhdGEuY29kZSA9PSAyKSB7CiAgICAgICAgICBpZiAoY2h1bmtJbmZvLmN1cnJlbnRDaHVuayA8IGNodW5rSW5mby5jaHVua0NvdW50IC0gMSkgewogICAgICAgICAgICBjb25zb2xlLmxvZygn5YiG54mH5LiK5Lyg5oiQ5YqfJyk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyDlvZPmgLvmlbDlpKfkuo7nrYnkuo7liIbniYfkuKrmlbDnmoTml7blgJkKICAgICAgICAgICAgaWYgKGNodW5rSW5mby5jdXJyZW50Q2h1bmsgKyAxID09IGNodW5rSW5mby5jaHVua0NvdW50KSB7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+aWh+S7tuW8gOWniy0tLS0tLeWQiOW5tuaIkOWKnycpOwogICAgICAgICAgICAgIHN1Y2Nlc3MocmVzLmRhdGEpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZSkgewogICAgICAgIGVycm9yICYmIGVycm9yKGUpOwogICAgICB9KTsKICAgIH0pOwogIH07CgogIHJlYWRGaWxlTUQ1KCk7IC8vIOW8gOWni+aJp+ihjOS7o+eggQp9Ow=="},{"version":3,"names":["md5","upload","uploadByPieces","file","pieceSize","success","error","uploading","fileMD5","chunkSize","chunkCount","Math","ceil","size","readFileMD5","console","log","fileRederInstance","FileReader","readAsBinaryString","addEventListener","e","fileBolb","target","result","readChunkMD5","getChunkInfo","currentChunk","start","end","min","chunk","slice","i","uploadChunk","chunkInfo","Promise","resolver","reject","config","headers","fetchForm","FormData","append","name","then","res","data","code","catch"],"sources":["E:/item/newItem/admin/src/utils/upload.js"],"sourcesContent":["import md5 from 'js-md5'; //引入MD5加密\r\nimport { upload } from '@/api/upload.js'; // 这里指前端调用接口的api方法\r\nexport const uploadByPieces = ({ file, pieceSize = 2, success, error, uploading }) => {\r\n // 如果文件传入为空直接 return 返回\r\n if (!file) return;\r\n let fileMD5 = ''; // 总文件列表\r\n const chunkSize = pieceSize * 1024 * 1024; // 5MB一片\r\n const chunkCount = Math.ceil(file.size / chunkSize); // 总片数\r\n // 获取md5\r\n const readFileMD5 = () => {\r\n // 读取视频文件的md5\r\n console.log('获取文件的MD5值');\r\n let fileRederInstance = new FileReader();\r\n console.log('file', file);\r\n fileRederInstance.readAsBinaryString(file);\r\n fileRederInstance.addEventListener('load', (e) => {\r\n let fileBolb = e.target.result;\r\n fileMD5 = md5(fileBolb);\r\n console.log('fileMD5', fileMD5);\r\n console.log('文件未被上传,将分片上传');\r\n readChunkMD5();\r\n });\r\n };\r\n const getChunkInfo = (file, currentChunk, chunkSize) => {\r\n let start = currentChunk * chunkSize;\r\n let end = Math.min(file.size, start + chunkSize);\r\n let chunk = file.slice(start, end);\r\n return { start, end, chunk };\r\n };\r\n // 针对每个文件进行chunk处理\r\n const readChunkMD5 = async () => {\r\n // 针对单个文件进行chunk上传\r\n for (var i = 0; i < chunkCount; i++) {\r\n const { chunk } = getChunkInfo(file, i, chunkSize);\r\n console.log('总片数' + chunkCount);\r\n console.log('分片后的数据---测试:' + i);\r\n await uploadChunk({ chunk, currentChunk: i, chunkCount });\r\n }\r\n };\r\n const uploadChunk = (chunkInfo) => {\r\n // progressFun()\r\n return new Promise((resolver, reject) => {\r\n let config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n };\r\n // 创建formData对象,下面是结合不同项目给后端传入的对象。\r\n let fetchForm = new FormData();\r\n fetchForm.append('chunkNumber', chunkInfo.currentChunk + 1); // 第几片\r\n fetchForm.append('chunkSize', chunkSize); // 分片大小的限制 例如限制 5M\r\n fetchForm.append('currentChunkSize', chunkInfo.chunk.size); // 每一片的大小\r\n fetchForm.append('file', chunkInfo.chunk); //每一片的文件\r\n fetchForm.append('filename', file.name); // 文件名\r\n fetchForm.append('totalChunks', chunkInfo.chunkCount); //总片数\r\n fetchForm.append('md5', fileMD5);\r\n upload(fetchForm, config)\r\n .then((res) => {\r\n console.log('分片上传返回信息:', res);\r\n if (res.data.code == 1) {\r\n // // 结合不同项目 将成功的信息返回出去\r\n // 下面如果在项目中没有用到可以不用打开注释\r\n uploading(chunkInfo.currentChunk + 1, chunkInfo.chunkCount);\r\n resolver(true);\r\n } else if (res.data.code == 2) {\r\n if (chunkInfo.currentChunk < chunkInfo.chunkCount - 1) {\r\n console.log('分片上传成功');\r\n } else {\r\n // 当总数大于等于分片个数的时候\r\n if (chunkInfo.currentChunk + 1 == chunkInfo.chunkCount) {\r\n console.log('文件开始------合并成功');\r\n success(res.data);\r\n }\r\n }\r\n }\r\n })\r\n .catch((e) => {\r\n error && error(e);\r\n });\r\n });\r\n };\r\n readFileMD5(); // 开始执行代码\r\n};\r\n"],"mappings":"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"}]}
|