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

bootstrapvue上传文件并存储到服务器指定路径及从服务器某路径下载文件

前记

第一次接触上传及下载文件,做个总结。

从浏览器上传本地文件

前端

  • 本处直接将input上传放在了button内实现。
  • 主要利用了input的type=“file” 实现上传框。
  • 其中accept可以限制弹出框可选择的文件类型。可限制多种:
:accept="['doc', 'docx']"
  • 示例代码
<b-buttonclass="btn btn-info"onclick="upload.click()"
><input type="file" name="upload" id="upload" ref="file"style="display: none;"  @change="onFileSelected"accept=".png"/>
</b-button>
methods: {onFileSelected() {this.file = this.$refs.file.files[0]const formData = new FormData()formData.append('file', this.file)},
}

注:此处打印formData 显示为空,但实际可以传输,可以打印this.file查看。

  • 也可使用以下代码(即b-form-file官方文件选择):
<template><div><b-form-file v-model="file" @change="onFileSelected"></b-form-file><b-button @click="uploadFile">上传</b-button></div>
</template>
<script>
import axios from 'axios'export default {data() {return {file: null}},methods: {onFileSelected(event) {this.file = event.target.files[0]},uploadFile() {if (!this.file) {return}let formData = new FormData()formData.append('file', this.file)axios.post('/api/upload', formData).then(response => {console.log(response.data)})}}
}
</script>

接口

  • 常用有axios和http
  • http: 使用http传输时,加上了Content-Type,但是一直有问题。后来发现代码中给http包装了下,强转了Content-Type的问题,实际直接使用xhr.send(data)即可
http.post('/upload', formData, {headers: {'Content-Type': 'multipart/form-data'}
})

后端

def upload(request):# 检查是否有文件被上传if 'file' not in request.files:return response.json({'error': 'No file uploaded'}, status=400)# 获取上传的文件对象file = request.files['file'][0]# 检查文件类型是否合法,这里以图片为例if not file.type.startswith('image/'):return response.json({'error': 'Invalid file type'}, status=400)# 定义存储目录和文件名upload_dir = '/path/to/upload/dir'filename = file.name# 创建存储目录(如果不存在)if not os.path.exists(upload_dir):os.makedirs(upload_dir)# 保存文件到指定路径with open(os.path.join(upload_dir, filename), 'wb') as f:f.write(file.body)

引用

vue文件上传功能bootstrap框架
XMLHttpRequest
文件选择(Form File Input)
Vue使用formData类型上传文件

相关文章:

bootstrapvue上传文件并存储到服务器指定路径及从服务器某路径下载文件

前记 第一次接触上传及下载文件&#xff0c;做个总结。 从浏览器上传本地文件 前端 本处直接将input上传放在了button内实现。主要利用了input的type“file” 实现上传框。其中accept可以限制弹出框可选择的文件类型。可限制多种&#xff1a; :accept"[doc, docx]&qu…...

Qt OpenGL(四十二)——Qt OpenGL 核心模式-GLSL(二)

提示:本系列文章的索引目录在下面文章的链接里(点击下面可以跳转查看): Qt OpenGL 核心模式版本文章目录 Qt OpenGL(四十二)——Qt OpenGL 核心模式-GLSL(二) 冯一川注:GLSL其实也是不断迭代的,比如像3.3版本中,基本数据类型浮点型只支持float型,而GLSL4.0版本开始就…...

C++基础讲解第八期(智能指针、函数模板、类模板)

C基础讲解第八期 代码中也有对应知识注释&#xff0c;别忘看&#xff0c;一起学习&#xff01; 一、智能指针二、模板1. 概念2.函数模板1. 函数模板和普通函数 3. 类模板1.类模板的定义2.举个例子3.举例 一、智能指针 举个栗子: 看下面代码, 当我们直接new一个指针时, 忘记dele…...

JMeter 测试 ActiveMq

JMeter 测试 ActiveMq 的资料非常少&#xff0c; 我花了大量的时间才研究出来 关于ActiveMq 的文章请参考我另外的文章。 版本号: ActiveMq 版本号: 5.91 Jmeter 版本号: 1.13 添加ActiveMq 的jar包 将 ActiveMq 下的 "activemq-all-5.9.1.jar" 复制…...

2023年4月和5月随笔

1. 回头看 为了不耽误学系列更新&#xff0c;4月随笔合并到5月。 日更坚持了151天&#xff0c;精读完《SQL进阶教程》&#xff0c;学系统集成项目管理工程师&#xff08;中项&#xff09;系列更新完成。 4月和5月两月码字114991字&#xff0c;日均码字数1885字&#xff0c;累…...

新Linux服务器安装Java环境[JDK、Tomcat、MySQL、Nacos、Redis、Nginx]

文章目录 JDK服务Tomcat服务MySQL服务Nacos服务Redis服务Nginx服务 说明&#xff1a;本文不使用宝塔安装 温馨提示宝塔安装命令&#xff1a;yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh JDK服务…...

精简总结:一文说明软件测试基础概念

基础概念-1 基础概念-2 目录 一、什么是软件测试&#xff1f; 二、软件测试的特点 三、软件测试和开发的区别 1、内容&#xff1a; 2、技能区别 3、工作环境 4、薪水 5、发展前景 6、繁忙程度 7、技能要求 四、软件测试与调试的区别 1、角色 2、目的 3、执行的阶…...

通过 Gorilla 入门机器学习

机器学习是一种人工智能领域的技术和方法&#xff0c;旨在让计算机系统能够从数据中学习和改进&#xff0c;而无需显式地进行编程。它涉及构建和训练模型&#xff0c;使其能够自动从数据中提取规律、进行预测或做出决策。 我对于机器学习这方面的了解可以说是一片空白&#xf…...

【二叉树】298. 二叉树最长连续序列

文章目录 一、题目1、题目描述2、基础框架3、原题链接 二、解题报告1、思路分析2、时间复杂度3、代码详解 三、本题小知识 一、题目 1、题目描述 给你一棵指定的二叉树的根节点 root &#xff0c;请你计算其中 最长连续序列路径 的长度。 最长连续序列路径 是依次递增 1 的路…...

Matlab论文插图绘制模板第100期—紧凑排列多子图(Tiledlayout)

不知不觉&#xff0c;《Matlab论文插图绘制模板》系列来到了第100期。 在此之前&#xff0c;其实我也没想到会有这么多种数据可视化表达方式&#xff0c;论文里不是折线图就是柱状图&#xff0c;单调的很。 假如研究生那会要是能遇到现在的自己&#xff08;分享的内容&#x…...

[2.0快速体验]Apache Doris 2.0 日志分析快速体验

1. 概述 应用程序、服务器、云基础设施、IoT 和移动设备、DevOps、微服务架构—最重要的业务和 IT 发展趋势帮助我们以前所未有的方式优化运维和客户体验。但这些趋势也导致由机器生成的数据出现爆炸式成长&#xff0c;其中包括日志和指标等&#xff0c;例如&#xff0c;用户交…...

MySQL学习-数据库创建-数据库增删改查语句-事务-索引

MySQL学习 前言 SQL是结构化查询语言的缩写&#xff0c;用于管理关系数据库(RDBMS)中的数据。SQL语言由IBM公司的Donald Chamberlin和Raymond Boyce于20世纪70年代开发而来&#xff0c;是关系型数据库最常用的管理语言。 使用SQL语言可以实现关系型数据库中的数据处理、数据…...

浏览器渗透攻击-渗透测试模拟环境(9)

介绍了浏览器供给面和堆喷射技术。 “客户端最流行的应用软件是什么,大家知道吗?” 这个简单的问题,你当然不会放过:“当然是浏览器,国内用得最多的估计还是 IE 浏览器,其实 360安全浏览器遨游啥的也都是基于IE内核的。” “OK,浏览器是客户端渗透攻击的首要目标,目前IE…...

MySQL数据库基础(基础命令详解)

1、数据库操作 1.1、显示当前的数据库 SHOW DATABASES; 1.2、创建数据库 CREATE DATABASE IF NOT EXISTS 库名&#xff1b; 1.3、使用数据库 USE 库名; 1.4、删除数据库 DROP DATABASE IF EXISTS 库名&#xff1b; 说明&#xff1a;数据库删除之后&#xff0c;内部看不到对应…...

企业培训直播场景下嘉宾连线到底是如何实现的?

企业培训直播场景下&#xff0c;进行音视频连线的嘉宾&#xff0c;都拥有面向学员教学的权限&#xff0c;支持多位老师/专家异地同堂授课&#xff0c;那么&#xff0c;这种嘉宾连线到底是如何实现的&#xff1f; 企业培训&#xff0c;如何做到不受时间和地点限制&#xff0c;实…...

五、JSP05 分页查询及文件上传

五、JSP 分页查询及文件上传 5.1 使用分页显示数据 通过网络搜索数据时最常用的操作&#xff0c;但当数据量很大时&#xff0c;页面就会变得冗长&#xff0c;用户必须拖动才能浏览更多的数据 分页是把数据库中需要展示的数据逐页分步展示给用户 以分页的形式显示数据&#xff…...

一起看 I/O | 借助 Google Play 管理中心价格实验,优化定价策略

作者 / Google Play 产品经理 Phalene Gowling 今年 Google I/O 大会上的 "通过 Google Play Commerce 提升收益" 演讲重点为您介绍了深度集成至 Google Play 的最新创收工具。此工具专注于帮您优化定价策略。为您的产品或内容确定合适的价格是实现更出色的用户生命周…...

hexview 命令行操作使用说明

hexview 命令行操作使用说明 命令行操作基础格式 hexview.exe infile [option] -o outfile提取部分内容 hexview.exe app.hex /AR:0X200000-0X303404 /s /XI -o app1.hex/AR&#xff1a;指定提取的范围。&#xff08;也可以使用/CR&#xff0c;它可以指定多个范围&#xff0…...

vue3+element plus,使用分页total修改成中文

vue3element plus&#xff0c;使用分页total修改成中文 使用element plus的分页功能 el-pagination 的时候&#xff0c;total属性显示是英文 这是我建的一个新项目&#xff0c;总数显示的Total 1000 我们的需求是显示中文&#xff0c;共 1000 条 这个就很尴尬&#xff0c;组件…...

RPC、HTTP、DSF、Dubbo,每个都眼熟,就是不知道有什么联系?

一、HTTP 和 RPC 首先&#xff0c;http 与 rpc 有什么区别这个问题不太严谨&#xff0c;因为这俩就不是一个层级的东西。 HTTP 这个大家太熟悉了吧&#xff1f;日常接触最多的恐怕就是各种http协议的接口了。 没错&#xff0c;http它是一个协议。 其他在这里就不打算铺开了…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...