vue如何把接口单独存放在一个文件

本文详细介绍了如何在Vue项目中配置HTTP接口,包括创建httpConfig.js文件,定义接口URL,以及如何在组件中调用这些接口进行数据交互。

第一步:在src/router目录下,建立一个js文件(文件名:httpConfig.js);

第二步:在httpConfig.js文件里面写上

const aa = 'http://192.168.1.123';//本地测试
const config = {
    bb: aa+ '/article/articleListPage',//所需的接口

}
//需要让外部拿到
export default config;

第三步:掉接口

_this.$http({
    url: _this.$httpConfig.bb,             //接口地址
    method: 'POST',                        //请求方式
    contentType: "application/json;",      //内容类型
    headers: {
        'Content-Type': 'application/json' //请求头
    },
    dataType: "json",                      //数据格式
    async: false,                          //设置同步/异步
    data: {
                                           //所需参数
    },
}).then(function(response) {
    console.log(response.data);            //打印成功信息
}, function(error) {
    console.log(error);                    //打印错误信息
});

 

Vue2 中将生的 PDF 文件保存到指定目录,可以通过前端生文件后,通过调用浏览器的下载机制实现本地保存。如果需要进一步上传至服务器并由服务端进行存储,则还需要结合后端接口处理文件流。 ### 前端生 PDF 并本地保存 使用 `html2canvas` 和 `jspdf` 可以将页面中的某个 DOM 元素渲染为 PDF,并触发浏览器的下载行为[^2]。以下是一个封装后的示例代码: ```javascript // utils/pdfUtils.js import html2canvas from 'html2canvas'; import jsPDF from 'jspdf'; export const generateAndDownloadPDF = (elementId, filename = 'document.pdf') => { const element = document.getElementById(elementId); html2canvas(element).then(canvas => { const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF('p', 'mm', 'a4'); const imgProps = pdf.getImageProperties(imgData); const pdfWidth = 210; const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight); pdf.save(filename); }); }; ``` 在组件中调用该方法: ```vue <template> <div> <div id="pdf-content"> <!-- 要导出的内容 --> <h1>这是要保存为 PDF 的内容</h1> </div> <button @click="generatePdf">导出 PDF</button> </div> </template> <script> import { generateAndDownloadPDF } from '@/utils/pdfUtils'; export default { methods: { generatePdf() { generateAndDownloadPDF('pdf-content', 'my-document.pdf'); } } } </script> ``` ### 将 PDF 文件上传到后端并保存到指定目录 若希望将生的 PDF 文件上传到服务器并保存到特定路径(如 `/uploads/pdfs/`),可以将生的 PDF 数据转为 Blob 并通过 Axios 发送到后端: ```javascript // 修改 pdfUtils.js import axios from 'axios'; export const generateAndUploadPDF = async (elementId, apiEndpoint) => { const element = document.getElementById(elementId); const canvas = await html2canvas(element); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF('p', 'mm', 'a4'); const imgProps = pdf.getImageProperties(imgData); const pdfWidth = 210; const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight); // 转换为 Blob const blob = pdf.output('blob'); const formData = new FormData(); formData.append('file', blob, 'document.pdf'); // 上传到后端 const response = await axios.post(apiEndpoint, formData, { headers: { 'Content-Type': 'multipart/form-data' } }); return response.data; }; ``` 在组件中使用: ```vue <script> import { generateAndUploadPDF } from '@/utils/pdfUtils'; export default { methods: { async uploadPdf() { try { const result = await generateAndUploadPDF('pdf-content', '/api/upload-pdf'); console.log('上传结果:', result); } catch (error) { console.error('上传失败:', error); } } } } </script> ``` 后端(例如 Node.js + Express)接收文件并保存到指定目录: ```javascript // server.js const express = require('express'); const multer = require('multer'); const path = require('path'); const app = express(); const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, './uploads/pdfs/'); }, filename: (req, file, cb) => { cb(null, Date.now() + '-' + file.originalname); } }); const upload = multer({ storage }); app.post('/api/upload-pdf', upload.single('file'), (req, res) => { res.json({ message: '文件已保存', path: req.file.path }); }); ``` ### 总结 - **前端本地保存**:使用 `jsPDF` 的 `.save()` 方法。 - **上传并服务器端保存**:将 PDF 转为 Blob 并通过 `FormData` 提交至后端,服务端可使用 Multer 等中间件控制文件存储路径。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值