From 6f18bf934409f8d8aaee75b6ed5180aabcaef37a Mon Sep 17 00:00:00 2001 From: zhuhao <979263092@qq.com> Date: Thu, 18 Jul 2024 16:28:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E6=A0=B8=E5=BF=83=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 4 +- .env.production | 4 +- src/main/file.js | 63 ++++++++++--------- .../src/layout/components/Uploader.vue | 2 +- .../prepare/container/file-oper-batch.vue | 1 - src/renderer/src/views/prepare/index.vue | 3 +- 6 files changed, 40 insertions(+), 37 deletions(-) diff --git a/.env.development b/.env.development index 6da57b4..c581825 100644 --- a/.env.development +++ b/.env.development @@ -7,6 +7,8 @@ VITE_APP_ENV = 'development' # AIx融合数字管理系统/开发环境 VITE_APP_BASE_API = '/dev-api' +VITE_APP_UPLOAD_API = 'http://192.168.2.52:7863' + VITE_APP_RES_FILE_PATH = 'https://file.ysaix.com:7868/src/assets/textbook/booktxt/' -VITE_APP_BUILD_BASE_PATH = 'https://file.ysaix.com:7868/' \ No newline at end of file +VITE_APP_BUILD_BASE_PATH = 'https://file.ysaix.com:7868/' diff --git a/.env.production b/.env.production index 5929a05..51d777c 100644 --- a/.env.production +++ b/.env.production @@ -7,9 +7,11 @@ VITE_APP_ENV = 'production' # AIx融合数字管理系统/生产环境 VITE_APP_BASE_API = 'http://192.168.2.52:7863' +VITE_APP_UPLOAD_API = 'https://prev.ysaix.com:7868' + # 是否在打包时开启压缩,支持 gzip 和 brotli VITE_BUILD_COMPRESS = gzip VITE_APP_RES_FILE_PATH = 'https://prev.ysaix.com:7868/src/assets/textbook/booktxt/' -VITE_APP_BUILD_BASE_PATH = 'https://prev.ysaix.com:7868/' \ No newline at end of file +VITE_APP_BUILD_BASE_PATH = 'https://prev.ysaix.com:7868/' diff --git a/src/main/file.js b/src/main/file.js index 170d134..7580c8f 100644 --- a/src/main/file.js +++ b/src/main/file.js @@ -1,10 +1,11 @@ +import CryptoJS from 'crypto-js' + const fs = require('fs') const path = require('path') import { ElectronDownloadManager } from 'electron-dl-manager' import { dialog } from 'electron' import axios from 'axios' -const uploadUrl = import.meta.env.VITE_APP_BASE_API + '/smarttalk/file/upload' -console.log(uploadUrl) +const uploadUrl = import.meta.env.VITE_APP_UPLOAD_API + '/smarttalk/file/upload' const manager = new ElectronDownloadManager() export default async function ({ app, shell, BrowserWindow, ipcMain }) { const userDataPath = app.getPath('userData') @@ -46,6 +47,18 @@ export default async function ({ app, shell, BrowserWindow, ipcMain }) { }) }) + function getFileMD5(file) { + return new Promise((resolve, reject) => { + const fileReader = new FileReader() + fileReader.onload = (e) => { + const buffer = e.target.result + let md5 = CryptoJS.MD5(buffer).toString() + resolve(md5) + } + fileReader.readAsArrayBuffer(file) + }) + } + ipcMain.on('creat-file-default', (e, { name, uploadData, cookie }) => { createFolder('tempFile').then(() => { let path = appTempFilePath + name @@ -55,50 +68,38 @@ export default async function ({ app, shell, BrowserWindow, ipcMain }) { if (err) { return console.error(err) } - console.log(cookie) // 配置上传的请求 - // const uploadUrl = 'http://192.168.2.52:7863/smarttalk/file/upload' // 你的上传服务URL const config = { headers: { - 'Content-Type': 'application/octet-stream', // 或者其他适合上传文件的Content-Type + 'Content-Type': 'multipart/form-data', // 或者其他适合上传文件的Content-Type Authorization: 'Bearer ' + cookie } } - + let md5 = CryptoJS.MD5(data).toString() + let formData = new FormData() // 使用axios上传文件 + let file = new File([data], name, { + type: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' + }) + formData.append('file', file) + formData.append('md5',md5) + + for (let key in uploadData) { + if (uploadData.hasOwnProperty(key)) { // 检查是否是对象自身的属性 + formData.append(key,uploadData[key]) + } + } + formData.append("fileFlag","教案") axios - .post(uploadUrl, { ...uploadData, data }, config) + .post(uploadUrl, formData, config) .then((response) => { + e.reply('creat-file-default-reply', response.data) console.log('File uploaded successfully:', response.data) }) .catch((error) => { console.error('Error uploading file:', error) }) }) - /*fs.readFile(path, (err, data) => { - if (err) { - return console.error(err) - } - let file = new File([data], '111.pptx', { - type: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' - }) - const headers = { - 'Content-Type': 'multipart/form-data', - Authorization: 'Bearer ' + cookie - } - axios - .post( - import.meta.env.VITE_APP_BASE_API + '/smarttalk/file/upload', - { - file - }, - { headers } - ) - .then((res) => { - console.log(res) - }) - // e.reply('creat-file-default-reply', res) - })*/ }) }) diff --git a/src/renderer/src/layout/components/Uploader.vue b/src/renderer/src/layout/components/Uploader.vue index 1dc7d9d..e094b35 100644 --- a/src/renderer/src/layout/components/Uploader.vue +++ b/src/renderer/src/layout/components/Uploader.vue @@ -69,7 +69,7 @@ export default { return { timer: null, uploadDatas: {}, - uploadUrl: import.meta.env.VITE_APP_BASE_API + '/smarttalk/file/upload', + uploadUrl: import.meta.env.VITE_APP_UPLOAD_API + '/smarttalk/file/upload', headers: { Authorization: 'Bearer ' + getToken() }, diff --git a/src/renderer/src/views/prepare/container/file-oper-batch.vue b/src/renderer/src/views/prepare/container/file-oper-batch.vue index 7bee23e..41f8357 100644 --- a/src/renderer/src/views/prepare/container/file-oper-batch.vue +++ b/src/renderer/src/views/prepare/container/file-oper-batch.vue @@ -79,7 +79,6 @@ export default { let ids = this.choose.map((item) => { return { id: item.fileNewName, name: item.fileShowName } }) - console.log(ids) exportFile(ids).then((res) => { console.log(res) }) diff --git a/src/renderer/src/views/prepare/index.vue b/src/renderer/src/views/prepare/index.vue index 7e6b36f..0f3f8c0 100644 --- a/src/renderer/src/views/prepare/index.vue +++ b/src/renderer/src/views/prepare/index.vue @@ -81,7 +81,6 @@ import { toTimeText } from '@/utils/date' import { ElMessage } from 'element-plus' import { isHaveLocalFile, parseCataByNode, creatPPT } from '@/utils/talkFile' import FileOperBatch from '@/views/prepare/container/file-oper-batch.vue' -import fs from 'fs' const { ipcRenderer } = window.electron || {} export default { name: 'Prepare', @@ -136,7 +135,7 @@ export default { methods: { createFile() { creatPPT('新建ppt文档.pptx',this.uploadData).then((res) => { - console.log(res) + this.currentFileList.unshift(res.resData) }) }, onMoveSingleFile(item) {