当前位置: 首页 > news >正文

衡水企业网站设计报价正能量网站下载

衡水企业网站设计报价,正能量网站下载,网站页面设计需求,智能建站模板文章目录 一、环境准备1.1 创建Vue3项目1.2 安装依赖1.3 配置Element Plus 二、文件上传实现2.1 基础上传组件2.2 自定义上传逻辑#xff08;Axios实现#xff09; 三、文件下载实现3.1 直接下载#xff08;已知文件URL#xff09;3.2 后端接口下载#xff08;二进制流Axios实现 三、文件下载实现3.1 直接下载已知文件URL3.2 后端接口下载二进制流 四、文件预览实现4.1 图片预览4.2 PDF预览使用pdf.js4.3 Excel预览使用xlsx 五、完整接口示例5.1 上传接口Node.js示例5.2 下载接口Node.js示例 六、注意事项七、完整项目结构八、总结 一、环境准备 1.1 创建Vue3项目 npm create vuelatest # 选择TypeScript、Pinia可选、ESLint等配置1.2 安装依赖 npm install axios element-plus element-plus/icons-vue1.3 配置Element Plus // main.ts import ElementPlus from element-plus import element-plus/dist/index.cssconst app createApp(App) app.use(ElementPlus)二、文件上传实现 2.1 基础上传组件 templateel-uploadclassupload-demo:actionuploadUrl:headersheaders:on-successhandleSuccess:before-uploadbeforeUploadel-button typeprimary点击上传/el-buttontemplate #tipdiv classel-upload__tip支持扩展名.jpg/.png/.pdf最大5MB/div/template/el-upload /templatescript setup langts import { ref } from vue import type { UploadProps } from element-plusconst uploadUrl ref(https://api.example.com/upload) const headers ref({Authorization: Bearer localStorage.getItem(token) })// 文件预校验 const beforeUpload: UploadProps[beforeUpload] (rawFile) {const isValidType [image/jpeg, image/png, application/pdf].includes(rawFile.type)const isLt5M rawFile.size / 1024 / 1024 5if (!isValidType) {ElMessage.error(文件格式不支持!)return false}if (!isLt5M) {ElMessage.error(文件大小不能超过5MB!)return false}return true }// 上传成功回调 const handleSuccess: UploadProps[onSuccess] (response) {ElMessage.success(上传成功)console.log(服务器返回:, response)// 通常返回文件访问地址 } /script2.2 自定义上传逻辑Axios实现 const customUpload async (file: File) {const formData new FormData()formData.append(file, file)formData.append(userId, 123)try {const { data } await axios.post(/api/upload, formData, {headers: {Content-Type: multipart/form-data,Authorization: Bearer ${localStorage.getItem(token)}}})return data} catch (error) {ElMessage.error(上传失败)throw error} }三、文件下载实现 3.1 直接下载已知文件URL templateel-button clickhandleDownload下载文件/el-button /templatescript setup langts const handleDownload () {const link document.createElement(a)link.href https://api.example.com/files/sample.pdflink.download filename.pdf // 设置下载文件名document.body.appendChild(link)link.click()document.body.removeChild(link) } /script3.2 后端接口下载二进制流 const downloadFile async (fileId: string) {try {const response await axios.get(/api/download/${fileId}, {responseType: blob})// 创建Blob对象const blob new Blob([response.data])const url window.URL.createObjectURL(blob)// 提取文件名const contentDisposition response.headers[content-disposition]const fileName contentDisposition?.split(filename)[1]?.replace(//g, )|| download-file// 创建下载链接const link document.createElement(a)link.href urllink.download fileNamedocument.body.appendChild(link)link.click()window.URL.revokeObjectURL(url)document.body.removeChild(link)} catch (error) {ElMessage.error(下载失败)} }四、文件预览实现 4.1 图片预览 templateel-image :srcimageUrl :preview-src-list[imageUrl]fitcover/ /template4.2 PDF预览使用pdf.js npm install pdfjs-dist types/pdfjs-disttemplatediv refpdfContainer classpdf-viewer/div /templatescript setup langts import { ref, onMounted } from vue import * as pdfjsLib from pdfjs-distconst props defineProps{pdfUrl: string }()const pdfContainer refHTMLElement()onMounted(async () {const loadingTask pdfjsLib.getDocument(props.pdfUrl)const pdf await loadingTask.promisefor (let pageNum 1; pageNum pdf.numPages; pageNum) {const page await pdf.getPage(pageNum)const viewport page.getViewport({ scale: 1.5 })const canvas document.createElement(canvas)const context canvas.getContext(2d)!canvas.height viewport.heightcanvas.width viewport.widthawait page.render({canvasContext: context,viewport: viewport}).promisepdfContainer.value?.appendChild(canvas)} }) /script4.3 Excel预览使用xlsx npm install xlsxtemplateel-table :dataexcelDatael-table-column v-for(col, index) in columns:keyindex:propcol:labelcol//el-table /templatescript setup langts import { read, utils } from xlsx import { ref } from vueconst excelData ref([]) const columns ref([])const previewExcel async (file: File) {const data await file.arrayBuffer()const workbook read(data)const worksheet workbook.Sheets[workbook.SheetNames[0]]const jsonData utils.sheet_to_json(worksheet, { header: 1 })columns.value jsonData[0]excelData.value jsonData.slice(1).map(row {return columns.value.reduce((obj, col, index) {obj[col] row[index]return obj}, {})}) } /script五、完整接口示例 5.1 上传接口Node.js示例 // Express 路由 app.post(/api/upload, (req, res) {const multer require(multer)const upload multer({ dest: uploads/ })upload.single(file)(req, res, (err) {if (err) return res.status(500).json({ code: 500, message: 上传失败 })// 返回文件信息res.json({code: 200,data: {url: /files/${req.file.filename},originalname: req.file.originalname,size: req.file.size}})}) })5.2 下载接口Node.js示例 app.get(/api/download/:filename, (req, res) {const filePath path.join(__dirname, uploads, req.params.filename)res.setHeader(Content-Type, application/octet-stream)res.setHeader(Content-Disposition, attachment; filename${req.params.filename})const fileStream fs.createReadStream(filePath)fileStream.pipe(res) })六、注意事项 安全验证所有文件接口需进行身份验证文件大小限制Nginx需配置client_max_body_size文件存储 敏感文件不要存储在公开目录使用OSS云存储更佳 预览安全 防止XSS攻击特别处理HTML文件使用CSP内容安全策略 七、完整项目结构 /src ├─api/ │ └─file.ts # 文件相关接口封装 ├─components/ │ └─FilePreview.vue # 文件预览组件 ├─utils/ │ ├─download.ts # 下载工具函数 │ └─validation.ts # 文件验证函数八、总结 本文全面而详尽地实现了多项关键功能为开发者提供了从前端到后端、从组件开发到接口对接的全方位解决方案。首先我们基于Element Plus这一流行的Vue3组件库成功构建了一个高效且用户友好的文件上传组件。该组件不仅支持文件的快速上传还提供了丰富的用户交互体验如进度条显示、上传成功/失败提示等极大地提升了用户的使用感受。 在文件处理方面我们实现了Axios二进制流文件的下载功能。通过Axios的强大网络请求能力我们能够轻松地从服务器获取二进制文件流并将其保存到本地或进行进一步的处理。这一功能为文件的异步下载和动态处理提供了有力支持。 为了满足不同格式文件的预览需求我们精心设计了一套PDF/Excel/图片多格式的预览方案。该方案能够自动识别文件类型并调用相应的预览组件进行展示。无论是常见的图片文件还是复杂的PDF、Excel文档都能在我们的系统中得到清晰、准确的预览效果。 此外我们还提供了前后端完整接口示例展示了如何在Vue3前端与后端服务器之间进行高效的数据交互。通过详细的接口定义和示例代码开发者可以快速地理解并实现前后端的数据通信为项目的快速迭代和部署提供了有力保障。 最后在生产环境注意事项部分我们总结了在实际部署过程中可能遇到的问题及解决方案如性能优化、安全性考虑等。这些宝贵的经验分享将帮助开发者更好地将项目从开发环境迁移到生产环境确保系统的稳定性和可靠性。综上所述本文不仅提供了丰富的功能实现还为开发者提供了全面的开发指导和实战经验分享。
http://www.ho-use.cn/article/10822771.html

相关文章:

  • 男男互做网站泰国小网站下载渠道有哪些
  • 网站数据丢失了做数据恢复需多久学习网站建设网站
  • 深圳网站开发公司有哪些wordpress写博客流行吗
  • 网站开发专业公司有哪些龙岗高端网站建设
  • 淄博网站设计方案短剧推广平台app
  • 江山市建设局网站本地主机 搭建网站
  • 想开民宿自己怎么做介绍的网站微信营销软件破解版
  • 钦州市网站建设嘉兴制作手机网站
  • 做后台财务系统网站网络公司可以做哪些业务
  • 新手做自己的网站小程序推广怎么赚钱
  • 网站注册wordpress京东客系统
  • 嘉兴门户网站企业 网站 程序
  • 网站制作代码大全最简单的做网站的工具
  • 企业网站实名认证时间榆次建设局网站
  • wordpress会员制网站天眼查个人查询入口
  • 网站改版公司哪家好该如何选择深圳网站建设公司
  • 深圳网站建设高端湖北省建设主管网站
  • 网站浏览器兼容问题东莞一站式网站建设
  • 做网站多大上行速度山东建设银行招聘网站
  • 企业门户网站源码群晖wordpress安装教程
  • 佛山做网站哪家好wordpress账号注册页面
  • 网站建设报价费用是多少网站后台 请示
  • 网站被取消备案河南营销型网站建设
  • 阳江网站建设网站建设出售
  • 官方网站建设与维护好处wordpress视频略缩图
  • 做微信网站价格wordpress onepress
  • 网站只做静态页面安全受到影响备案域名出售
  • 网站关键字被百度收录寻找在山西运城专业做网站推广的
  • 网站说服力 营销型网站策划月嫂网站建设方案
  • 做网站最多的行业app开发软件要多少钱