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

制作ChatPDF之前端Vue搭建(二)

前端界面

接上篇: 制作ChatPDF之Elasticsearch8.13.4搭建(一)

为了实现一个基于 Vue.js 的前端应用,用户可以上传 PDF 文件,输入查询,并在输出框中显示查询结果,你需要以下步骤:

  1. 初始化 Vue 项目:使用 Vue CLI 创建一个新的 Vue 项目。
  2. 安装依赖:安装处理 PDF 文件和查询功能所需的库。
  3. 创建组件:创建上传 PDF 文件、输入查询和显示结果的组件。
  4. 实现 PDF 处理和查询功能:解析上传的 PDF 文件并实现查询功能。
  5. 整合组件:将组件整合到一个页面中,实现交互逻辑。

技术架构图

+---------------------+      +------------------+       +-----------------+
|                     |      |                  |       |                 |
| Frontend (Vue.js)   +----->| Backend (Node.js)|<----->| Elasticsearch   |
|                     |      |                  |       |                 |
| - File Upload       |      | - Upload API     |       | - Store PDF Data|
| - Input Query       |      | - Query API      |       | - Full-text     |
| - Display Results   |      | - Parse PDF      |       |   Search        |
|                     |      |                  |       |                 |
+---------------------+      +------------------+       +-----------------+

步骤概述

  1. Frontend (Vue.js):
    • 上传 PDF 文件并发送到后端。
    • 输入查询内容并发送到后端。
    • 显示查询结果。
  2. Backend (Node.js):
    • 接收 PDF 文件并解析内容。
    • 将解析后的内容存储到 Elasticsearch。
    • 接收查询请求并从 Elasticsearch 中搜索内容。
    • 返回查询结果给前端。
  3. Elasticsearch:
    • 存储 PDF 文件内容。
    • 提供全文搜索功能。

下面是一个基本的示例代码,展示如何实现上述功能。

1. 初始化 Vue 项目

首先,确保你已经安装了 Vue CLI。如果没有,先安装 Vue CLI:

npm install -g @vue/cli

然后创建一个新的 Vue 项目:

vue create pdf-query-app
cd pdf-query-app

2. 创建组件

创建一个新组件 PdfUploader.vue,用于上传 PDF 文件、输入查询和显示结果。

PdfUploader.vue
<template><div><input type="file" @change="handleFileUpload" accept="application/pdf" /><input type="text" v-model="query" placeholder="输入查询内容" /><button @click="searchPdf">查询</button><div v-if="result"><h3>查询结果:</h3><p>{{ result }}</p></div></div>
</template><script>
export default {data() {return {query: '',result: null};},methods: {handleFileUpload(event) {const file = event.target.files[0];const formData = new FormData();formData.append('file', file);fetch('http://localhost:3000/pdf/upload', {method: 'POST',body: formData}).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));},searchPdf() {fetch(`http://localhost:3000/pdf/search?q=${this.query}`).then(response => response.json()).then(data => {this.result = data.hits.hits.map(hit => hit._source.content).join(', ');}).catch(error => console.error('Error:', error));}}
};
</script><style scoped>
/* 添加你的样式 */
</style>

4. 整合组件

App.vue 中使用 PdfUploader 组件:

App.vue
<template><div id="app"><PdfUploader /></div>
</template><script>
import PdfUploader from './components/PdfUploader.vue';export default {name: 'App',components: {PdfUploader}
};
</script><style>
/* 添加你的样式 */
</style>

5. 运行项目

最后,启动你的 Vue 项目:

npm run serve

访问 http://localhost:8080,你应该能够看到一个文件上传输入框、一个文本输入框和一个按钮。上传一个 PDF 文件,输入查询内容并点击“查询”按钮,查询结果将显示在下方。

这个示例展示了基本的文件上传、PDF 解析和查询功能。你可以根据需要进一步优化和扩展功能,例如添加错误处理、更高级的查询功能等。

在这里插入图片描述

相关文章:

制作ChatPDF之前端Vue搭建(二)

前端界面 接上篇: 制作ChatPDF之Elasticsearch8.13.4搭建&#xff08;一&#xff09; 为了实现一个基于 Vue.js 的前端应用&#xff0c;用户可以上传 PDF 文件&#xff0c;输入查询&#xff0c;并在输出框中显示查询结果&#xff0c;你需要以下步骤&#xff1a; 初始化 Vue …...

汽车IVI中控开发入门及进阶(二十一):DAB和FM 收音机

前言: 在过去的十年里,数字收音机对车载娱乐产生了重大影响。现在,几乎每辆新车都标配了这项技术,这也是我们60%以上的人收听收音机的方式。甚至有传言称,在不久的将来,将永久关闭调频发射机,使许多车载收音机过时。但一些相对年轻的汽车在工厂里仍然没有安装DAB,而且…...

智能sql LLM

DB-GPT&#xff1a;彻底改变数据库与私有LLM技术的交互 智能SQL生成&#xff1a;后端技术与LLM的完美结合 智能SQL生成&#xff1a;后端技术与LLM的完美结合_llm sql-CSDN博客 GitHub - eosphoros-ai/DB-GPT: AI Native Data App Development framework with AWEL(Agentic Wor…...

大聪明教你学Java | 深入浅出聊 Stream.parallel()

前言 &#x1f34a;作者简介&#xff1a; 不肯过江东丶&#xff0c;一个来自二线城市的程序员&#xff0c;致力于用“猥琐”办法解决繁琐问题&#xff0c;让复杂的问题变得通俗易懂。 &#x1f34a;支持作者&#xff1a; 点赞&#x1f44d;、关注&#x1f496;、留言&#x1f4…...

图解大模型分布式并行各种通信原语

背景 在分布式集群上执行大模型任务时候&#xff0c;往往使用到数据并行&#xff0c;流水线并行&#xff0c;张量并行等技术&#xff0c;这些技术本质上也就是对数据进行各种方案的切分&#xff0c;然后放到不同的节点上运算。不同节点在计算的过程中需要对数据分发或者同步等…...

张大哥笔记:下一个风口是什么?

我们经常会问&#xff0c;下一个风口是什么&#xff1f;我们可以大胆预测一下&#xff0c;2024年的风口是什么呢&#xff1f; 40年前&#xff0c;如果你会开车&#xff0c;那就是响当当的铁饭碗&#xff1b; 30年前&#xff0c;如果你会英语和电脑&#xff0c;那也绝对是个人才…...

AI去衣技术中的几何着色:揭秘数字时尚的魔法

在数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变我们的生活&#xff0c;从智能家居到自动驾驶汽车&#xff0c;再到个性化医疗。然而&#xff0c;AI的影响远不止于此。它正在重塑我们对艺术、设计和时尚的理解。特别是在数字时尚领域&#…...

Leecode---技巧---只出现一次的数字 / 多数元素

题解&#xff1a; 利用异或运算 a⊕a 0 的性质&#xff0c;可用来消除所有出现了两次的元素&#xff0c;最后剩余的即为所得。 class Solution { public:int singleNumber(vector<int>& nums){// 初始化为0int ans 0;for(int x: nums){// 异或操作ans ^ x;}retur…...

为图片设置经纬度信息

一、java实现 小编看了很多技术博客&#xff0c;但是测试要么下载的jar包中的api和博客对不上&#xff0c;要么就是不对&#xff0c;总之没实现 Java 读取图片信息 java 写入 exif 信息 使用Java读取和修改图片的Exif信息 java获取图片的GPS信息 https://drewnoakes.com/code/e…...

密码和密钥的联系与区别

密码和密钥是两个非常重要的概念&#xff0c;但容易混淆这两者&#xff0c;以下内容介绍了它们的联系和区别&#xff1a; 一、定义 密码&#xff08;Password&#xff09;&#xff0c;在日常语境中&#xff0c;通常指的是个人为了验证自己的身份而设置的一段秘密的字符序列&am…...

C++编程法则365天一天一条(323)main函数执行之前和之后的动作

在C和C程序中&#xff0c;main 函数之前和之后执行的函数是由编译器、链接器和运行时环境共同决定的。以下是一些通常会在这些阶段执行的关键函数&#xff1a; 在 main 函数之前执行的函数 启动代码&#xff08;Start-up Code&#xff09;: 这是由编译器提供的一段代码&#…...

阿里云短信服务使用(Java)

文章目录 一、流程1.打开短信服务2.提交材料申请资质3.资质通过后&#xff0c;申请短信签名并设置短信模板4.右上角设置AccessKey5.充值 二、参考官方文档调用API1.引入maven依赖2.调用API补充 一、流程 1.打开短信服务 登陆注册阿里云 搜索“短信服务”&#xff0c;点击“免…...

C++17之std::void_t

目录 1.std::void_t 的原理 2.std::void_t 的应用 2.1.判断成员存在性 2.1.1.判断嵌套类型定义 2.1.2 判断成员是否存在 2.2 判断表达式是否合法 2.2.1 判断是否支持前置运算符 2.2.3 判断两个类型是否可做加法运算 3.std::void_t 与 std::enable_if 1.std::void_t 的…...

零基础入门篇①⑥ Python可变序列类型--字典

Python从入门到精通系列专栏面向零基础以及需要进阶的读者倾心打造,9.9元订阅即可享受付费专栏权益,一个专栏带你吃透Python,专栏分为零基础入门篇、模块篇、网络爬虫篇、Web开发篇、办公自动化篇、数据分析篇…学习不断,持续更新,火热订阅中🔥专栏限时一个月(5.8~6.8)重…...

C语言面试题1-10

C语言中的内存管理及相关问题探讨 在C语言编程中&#xff0c;内存管理是一个至关重要的概念&#xff0c;掌握内存的分布及其操作不仅能够提高代码效率&#xff0c;还能避免常见的内存泄漏等问题。本文将详细介绍C语言中内存的分布、堆区和栈区的区别、标识符的命名规则、定义和…...

Qt Designer工具如何修改MainWindow窗口的标题

Qt Designer工具如何修改MainWindow窗口的标题 在MainWindow的属性编辑器中选择“windowTitle”后面一栏修改成期望的窗口标题名称即可。 按住“ctrlR”即可查看可视化界面的窗口标题...

车辆前向碰撞预警系统性能要求和测试规程

前言 本文整理《GB/T 33577-2017 智能运输系统-车辆前向碰撞预警系统性能要求和测试规程》国标文件关键信息,FCW系统性能和测试右给深层次的认识。 术语和定义 车辆前向碰撞预警系统 forward vehicle collision warning system自车 subject vehicle(SV)目标车辆 target ve…...

C#实现winform中渲染图的展示

在WinForms中实现图形的渲染展示&#xff0c;可以使用GDI绘图技术。下面是一个简单的示例&#xff0c;演示如何在WinForms中展示一个圆形图形&#xff0c;并根据用户输入的半径动态改变圆的大小&#xff1a; 请在Visual Studio中创建一个WinForms应用程序&#xff0c;并将以下…...

JTS库的讲解及使用

JTS&#xff08;Java Topology Suite&#xff09;是一套用于创建、操作和分析二维几何对象的Java库。JTS提供了丰富的几何操作和分析功能&#xff0c;是GIS&#xff08;地理信息系统&#xff09;应用中的重要工具。以下是JTS库的一些主要功能及其详细使用示例&#xff1a; 1. …...

【C++杂货铺】unordered系列容器

目录 &#x1f308; 前言&#x1f308; &#x1f4c1; unordered系列关联式容器 &#x1f4c1; 底层结构 &#x1f4c2; 哈希概念 &#x1f4c2; 哈希冲突 &#x1f4c2; 哈希函数 &#x1f4c2; 哈希冲突解决 &#x1f4c1; 模拟实现 &#x1f4c1; 总结 &#x1f308; 前…...

LangChain 1.0 中间件实战:5个钩子函数让你的Agent像专业工程师一样思考

LangChain 1.0中间件深度实践&#xff1a;5个钩子函数打造工程级Agent思维 当我们在2023年首次接触LangChain时&#xff0c;它还是一个以Chain为核心的实验性框架。如今&#xff0c;LangChain 1.0的发布标志着AI Agent开发正式进入生产就绪阶段。本文将带您深入探索其最具革命性…...

视频格式转换革新:m4s-converter让B站缓存视频无缝播放

视频格式转换革新&#xff1a;m4s-converter让B站缓存视频无缝播放 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 从缓存困境到自由播放&#x…...

s2-proGPU部署方案:多模型共存时s2-pro显存隔离与QoS保障策略

s2-proGPU部署方案&#xff1a;多模型共存时s2-pro显存隔离与QoS保障策略 1. 引言 在GPU服务器上同时运行多个AI模型已成为常态&#xff0c;但这也带来了显存资源竞争和性能波动的问题。本文将详细介绍如何在多模型共存环境下&#xff0c;为s2-pro语音合成模型实现显存隔离与…...

别再只会用百度搜了!手把手教你用site语法精准锁定CSDN、知乎等网站的技术文章

技术搜索的艺术&#xff1a;用site语法打造高效信息获取系统 每次打开搜索引擎&#xff0c;输入技术关键词后&#xff0c;铺天盖地的结果中真正有用的内容却寥寥无几——这可能是大多数开发者都经历过的困扰。广告推广、低质量转载、过时教程混杂其中&#xff0c;而真正优质的C…...

VideoAgentTrek Screen Filter 大规模部署成本分析:GPU资源优化配置指南

VideoAgentTrek Screen Filter 大规模部署成本分析&#xff1a;GPU资源优化配置指南 最近和几个做视频内容审核的朋友聊天&#xff0c;大家聊得最多的不是技术有多牛&#xff0c;而是“这玩意儿跑起来到底要花多少钱”。确实&#xff0c;像VideoAgentTrek Screen Filter这类视…...

交叉编译microcom

由于默认的busybox没有支持microcom工具&#xff0c;也没有提供源码&#xff0c;所以需要自己交叉编译microcom工具。 microcom工具 https://packages.ubuntu.com/zh-cn/plucky/microcom 下载ubuntu带的软件包microcom&#xff0c;下载microcom_2023.09.0.orig.tar.xz版本&…...

敏捷团队沟通技巧:减少冲突的5个方法

在敏捷开发环境中&#xff0c;软件测试从业者常面临跨职能冲突的挑战。数据显示&#xff0c;超过70%的项目延迟源于沟通不畅&#xff0c;尤其在测试与开发团队之间&#xff0c;角色目标错位&#xff08;如开发侧重快速交付&#xff0c;测试聚焦风险防控&#xff09;易引发摩擦。…...

线激光手眼标定里,欧拉角和四元数到底怎么选?一个案例讲清机器人姿态的‘坑’

线激光手眼标定中欧拉角与四元数的抉择&#xff1a;从理论误区到工程实践 在机器人视觉系统中&#xff0c;手眼标定是连接感知与执行的关键桥梁。当激光传感器安装在机械臂末端时&#xff0c;如何准确描述传感器坐标系与机器人坐标系之间的姿态关系&#xff0c;直接决定了后续视…...

别再手动画点阵了!用PCtoLCD2002搞定LCD/OLED汉字显示,附STM32移植代码

嵌入式开发实战&#xff1a;PCtoLCD2002字模生成与STM32显示全链路解析 在嵌入式设备上实现中文显示一直是开发者面临的经典难题。传统的手动绘制点阵方式不仅效率低下&#xff0c;而且难以保证显示效果的一致性。本文将深入探讨如何利用PCtoLCD2002工具链&#xff0c;从字模生…...

PyMobileDevice3 高效异步架构解析:深入理解iOS设备通信协议栈实现

PyMobileDevice3 高效异步架构解析&#xff1a;深入理解iOS设备通信协议栈实现 【免费下载链接】pymobiledevice3 Pure python3 implementation for working with iDevices (iPhone, etc...). 项目地址: https://gitcode.com/gh_mirrors/py/pymobiledevice3 PyMobileDev…...