import config from '@/config' import { uplaodfile } from "@/api/apis.js"; import { getToken } from '@/utils/auth' // 选择图片 export function chooseImage() { uni.chooseImage({ sourceType: ['album', 'camera'], // 使用相机拍照 camera: 'back', // 默认使用后置摄像头,可选值有front、back success: (res) => { console.log('拍照成功:', res); // 处理图片,例如预览图片或上传到服务器 // upload(res) let file = res.tempFiles[0]; var formData = new FormData(); formData.append('file', file) uplaodfile(formData).then(a => { console.log(aaa) }) }, fail: (err) => { console.error('拍照失败:', err); } }); } export function upload(res) { let file = res.tempFiles[0]; var formData = new FormData(); formData.append('file', file) var requestOptions = { method: 'post', headers: { Authorization: 'Bearer ' + getToken() }, body: formData, }; fetch( config.uploadUrl + '/file/upload/v1', requestOptions ) .then((response) => { return response.json(); }).then(res => { console.log(res); if (res.code == '1000') { uni.showToast({ title: res.message, }) } else { uni.showToast({ title: res.message, icon: 'error' }) } }) } // 选择视频 export function chooseVideo() { uni.chooseVideo({ sourceType: ['album', 'camera'], // 使用相机录像 camera: 'back', // 默认使用后置摄像头,可选值有front、back maxDuration: 60, // 最大录制时长(秒) success: (res) => { console.log('视频录制成功:', res); // 处理视频,例如将视频路径显示在页面上 }, fail: (err) => { console.error('视频录制失败:', err); } }); } // 选择照片或视频 export function chooseMedia() { uni.chooseMedia({ count: 9, // 默认为9, 设置为1时只能选择一个文件 mediaType: ['image', 'video'], // 选择媒体类型,可以是'image'或'video' sourceType: ['album', 'camera'], // 可选择来源是相册还是相机 success: (res) => { res.tempFiles.forEach(element => { const tempFilePaths = element.tempFilePath; // 上传文件到服务器 uploadFile(tempFilePaths); }); }, fail: (err) => { console.log('选择媒体失败:', err); } }); } export function getFile(filePath) { const fileManager = uni.getFileSystemManager(); fileManager.readFile({ filePath: filePath, // 需要读文件的路径 encoding: 'base64', // 编码格式,此处以base64为例,也可以使用'binary'等其他格式 success: (res) => { console.error('读取文件成功:', res.data); uploadFile(res.data); // 调用上传方法,传入文件内容 }, fail: (error) => { console.error('读取文件失败:', error); } }); } export function requestFile(filePath) { // const blob = new Blob([res.data]); // files: [formData], // create: true plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, (fs) => { fs.root.getFile(filePath, {}, (fileEntry) => { fileEntry.file((file) => { console.log("文件大小:", file); //创建读取文件对象 let fileReader = new plus.io.FileReader(); //以文本格式读取文件数据内容 // fileReader.readAsText(file, 'utf-8'); //文件读取操作完成时的回调函数 fileReader.readAsArrayBuffer(file); console.log("aaaa:", fileReader); fileReader.onloadend = (evt) => { console.log("文件:", evt); var fileData = new FormData(); fileData.append('file', new Blob([evt], { type: file.type })); // console.log(JSON.parse(evt.target.result), // 'JSON.parse(evt.target.result)') // resolve(JSON.parse(evt.target.result)) // sURL = JSON.parse(evt.target.result).URL; } }); // fileEntry.createWriter((writer) => { // writer.write(new Blob(['Hello, UniApp!'], { // type: 'text/plain' // })); // }); }); }); } // 上传文件到服务器 export function uploadFile(filePath) { uni.uploadFile({ url: config.baseUrl + '/file/upload/v1', // 你的上传API地址 filePath, name: 'file', // 必须填写,后台用来接收文件 header: { "Content-Type": "multipart/form-data;", Authorization: 'Bearer ' + getToken() }, success: (e) => { if (e.data.code == 200) { console.log('上传成功', e.data.data.path, e.data.data.url) } else { uni.showToast({ title: '上传附件失败,请稍候再试!', duration: 1000, icon: 'none' }); } }, fail: (uploadFileErr) => { console.log('上传失败:', uploadFileErr); return; }, }); }