精华内容
下载资源
问答
  • postman导出下载文件接口实例 场景 有一个导出报表的功能,页面上点击了导出,下载了报表 实例 接口上,点击send and download,选择存放路径,即可完成发送请求并下载

    postman导出下载文件接口实例

    场景

    有一个导出报表的功能,页面上点击了导出,下载了报表
    在这里插入图片描述

    实例

    接口上,点击send and download,选择存放路径,即可完成发送请求并下载
    在这里插入图片描述

    展开全文
  • 文章目录业务背景实现思路项目代码 业务背景 近期用Python-Flask开发项目遇到一个多文件打包下载的业务接口,文件格式有Excel、图片...根据数据库查找到的文件(图片、视频)URL地址下载文件,并存储到第一步生成的文

    业务背景

    • 近期用Python-Flask开发项目遇到一个多文件打包下载的业务接口,文件格式有Excel、图片文件、视频文件打包成zip下载。
    • 前端通过接口发送ID,后端通过ID查询数据库相关数据并生成Excel文档数据库查出图片和视频地址之后下载到服务器、打包成压缩包返回给前端。

    实现思路

    1. 后端根据ID创建文件夹到服务器目录
    2. 查找数据库数据生成Excel文件,并存储到第一步生成的文件夹内
    3. 根据数据库查找到的文件(图片、视频)URL地址下载文件,并存储到第一步生成的文件夹内
    4. 将文件夹打包zip
    5. 返回给前端

    项目代码

    • 项目基于Flask
    • 篇幅原因只贴出本下载接口业务相关代码
    # 添加下载API接口
    # Download
    api.add_resource(Download, "/activities/download/<int:activities_id>")
    
    • 模型类:
    # coding: utf-8
    # extensions 为自定义模块
    from extensions import db
    import datetime
    
    class Activities(db.Model):
        """
        活动
        """
        __tablename__ = 'activities'
        id = db.Column(db.Integer, primary_key=True)
        # 活动名称
        active = db.Column(db.String(64))
        # 活动类型
        active_type = db.Column(db.String(64))
        # 活动持续时间
        active_time = db.Column(db.Integer)
        # 活动对象
        active_object = db.Column(db.String(164))
        # 描述
        description = db.Column(db.String(164))
        # 图片 数据库存储格式为: ["url","url"]
        image = db.Column(db.String(1024))
        # 视频 数据库存储格式为: ["url","url"]
        video = db.Column(db.String(1024))
    
        # 创意
        idea_name = db.Column(db.String(164))
        # 学习
        learn_name = db.Column(db.String(164))
        # learn_id
        learn_id = db.Column(db.String(164))
    
        # 创建时间
        create_time = db.Column(db.DateTime, default=datetime.datetime.now)
        # 修改时间
        update_time = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now)
        # is_del
        is_delete = db.Column(db.Integer, default=0)
        # 状态
        status = db.Column(db.Integer, default=0)
    
    • 核心代码:
    from flask import make_response, send_from_directory
    import os, zipfile, re, xlsxwriter, requests
    # PS 数据库使用SQLAlchemy 导入自己的模型类
    from models import Activities
    
    class Download(Resource):
        def get(self, activities_id):
            # 1. 在项目目录内创建static文件夹
            path=os.path.abspath(os.path.dirname(os.path.dirname(__file__)))+"/static/"
            fileDownloadPath = path.replace('\\', '/')
            filePath = fileDownloadPath+ str(activities_id)+"/"
            if os.path.exists(filePath):
                shutil.rmtree(filePath)
            os.makedirs(filePath)
            
            #  2.数据库查找出数据存入excel
            object = Activities.query.filter(and_(Activities.id == activities_id, Activities.is_delete != 1)).first()
            # 自定义存储方法
            create_workbook(object, filePath+"Active.xlsx")
            
            # 3. 存储图片 存储视频
            if object.image is not None:
                imageUrl = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', str(object.image))
                if imageUrl is not None:
                    for data in imageUrl:
                    	# 自定义文件下载方法
                        getFile(filePath, data, "Image"+str(imageUrl.index(data)))
            if object.video is not None:
                videoUrl = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', str(object.video))
                if videoUrl is not None:
                    for data in videoUrl:
                    	# 自定义文件下载方法
                        getFile(filePath, data, "Video" + str(videoUrl.index(data)))
                        
            # 4. 自定义打包方法
            make_zip(filePath, fileDownloadPath+str(activities_id)+".zip")
            
            # 5. 返回zip
            response = make_response(
                send_from_directory(fileDownloadPath, str(activities_id)+".zip", as_attachment=True))
            return response
    
    # 生成Excel
    def create_workbook(object, filePath):
        # 创建Excel文件,不保存,直接输出
        workbook = xlsxwriter.Workbook(filePath)
        worksheet = workbook.add_worksheet("sheet")
        title = ["Activity Types", "Activity Details", "Duration Hours", "With Whom",  "Description", "Learnings", "Ideas"]
        worksheet.write_row('A1', title)
        worksheet.write_row('A2', [str(object.active),
                                   str(object.active_type),
                                   str(object.active_time),
                                   str(object.active_object),
                                   str(object.description),
                                   str(object.learn_name),
                                   str(object.idea_name)
                                   ])
        workbook.close()
    
    # 下载文件
    def getFile(filePath, url, fileName):
        response = requests.get(url).content
        with open(filePath+fileName+url[-4:], 'wb') as f:
            f.write(response)
        print ("Sucessful to download "+fileName)
    
    # 打包zip
    def make_zip(filePath, source_dir):
      zipf = zipfile.ZipFile(source_dir, 'w')
      pre_len = len(os.path.dirname(filePath))
      for parent, dirnames, filenames in os.walk(filePath):
        for filename in filenames:
          pathfile = os.path.join(parent, filename)
          arcname = pathfile[pre_len:].strip(os.path.sep)
          zipf.write(pathfile, arcname)
      zipf.close()
    
    展开全文
  • 在做接口测试的过程中,我们会遇到需要处理文件上传和下载的情况,我们可以使用Jmeter来完成文件的上传下载处理,本文提供两个小示例来展示如何使用Jmeter完成文件上传和文件下载并保存的功能 首先来看看普通的Http...

    简介

    在做接口测试的过程中,我们会遇到需要处理文件上传和下载的情况,我们可以使用Jmeter来完成文件的上传下载处理,本文提供两个小示例来展示如何使用Jmeter完成文件上传和文件下载并保存的功能

    首先来看看普通的Http接口请求的过程:

    填写服务器环境信息

    填写接口请求方法和接口路径

    填写参数信息

    发送请求

    接受响应

    文件处理上传

    文件上传的处理完全遵循上述流程,只需要在步骤3中去申明请求的类型是multipart/form-data和相应的Content-Type

    multipart/form-data是Http协议规定的一种表单类型,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表明文件类型

    Content-Type: 互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息,可以是:

    image/gif :gif图片格式

    application/pdf :pdf格式

    application/msword:Word文档格式

    application/octet-stream:二进制流

    binary:相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件

    示例:上传图片到baidu实现baidu搜图

    在HttpSampler里,正常填写请求参数
    在这里插入图片描述
    切换到File Upload 参数页,填写文件路径和MimeType(Content-Type)即可
    在这里插入图片描述
    运行脚本,查看请求数据,图片被以二进制形式的表单参数传递到服务器
    在这里插入图片描述
    成功返回响应结果
    在这里插入图片描述
    文件下载处理

    文件下载的步骤也和普通的Http请求一样,只不过返回的是二进制的文件流,需要额外添加请求后置处理器去保存文件到本地电脑上,此处可以通过添加BeanshellPostProcessor来实现文件的保存和文件内容的解析。Beanshell是一种Java脚本语言,本示例展示如何把文件下载保存到本地:

    发起图片下载请求
    在这里插入图片描述
    添加Beanshell Post Processor,使用内置变量prev获取接口响应数据,并通过Java代码把响应的二进制流保存到本地E盘
    在这里插入图片描述
    运行脚本,查看结果和本地文件
    在这里插入图片描述
    如果想解析文件内容可以使用Java来读取文件并进行值得校验
    在这里插入图片描述
    作  者:Testfan Kitty

    出  处:微信公众号:自动化软件测试平台

    版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

    展开全文
  • 我们会遇到需要处理文件上传和下载的情况,我们可以使用Jmeter来完成文件的上传下载处理,本文提供两个小示例来展示如何使用Jmeter完成文件上传和文件下载并保存的功能首先来看看普通的Http接口请求的过程:...
    1f7399e6ca774bea48d790826c43a167.png简介在做接口测试的过程中,我们会遇到需要处理文件上传和下载的情况,我们可以使用Jmeter来完成文件的上传下载处理,本文提供两个小示例来展示如何使用Jmeter完成文件上传和文件下载并保存的功能首先来看看普通的Http接口请求的过程:填写服务器环境信息填写接口请求方法和接口路径填写参数信息发送请求接受响应文件处理上传文件上传的处理完全遵循上述流程,只需要在步骤3中去申明请求的类型是multipart/form-data和相应的Content-Typemultipart/form-data是Http协议规定的一种表单类型,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表明文件类型 Content-Type: 互联网媒体类型也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息,可以是:image/gif :gif图片格式   application/pdf :pdf格式 application/msword:Word文档格式 application/octet-stream:二进制流 binary:相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件示例:上传图片到baidu实现baidu搜图在HttpSampler里,正常填写请求参数6c4b626dd46195e8164e9f0ba60e2dff.png切换到File Upload 参数页,填写文件路径和MimeType(Content-Type)即可2497921e28f91cd28b3011e8b9e4dad2.png运行脚本,查看请求数据,图片被以二进制形式的表单参数传递到服务器400cb5f78633d91abdb28ed97de831ea.png成功返回响应结果8e35ccca54411fbc62b99ca540840f42.png文件下载处理文件下载的步骤也和普通的Http请求一样,只不过返回的是二进制的文件流,需要额外添加请求后置处理器去保存文件到本地电脑上,此处可以通过添加BeanshellPostProcessor来实现文件的保存和文件内容的解析。Beanshell是一种Java脚本语言,本示例展示如何把文件下载保存到本地:发起图片下载请求76e884dc1d1fdd155021aea6c584ddae.png添加Beanshell Post Processor,使用内置变量prev获取接口响应数据,并通过Java代码把响应的二进制流保存到本地E盘8c28ada28a3edb09485acf69c5efe796.png运行脚本,查看结果和本地文件182b602675deab948b70886ba33a4bcb.png如果想解析文件内容可以使用Java来读取文件并进行值得校验21b57c6e77617783a02d1eea67a24f49.png7d97c142536977a5b6ff6bdf46150512.gifBye~5bbd21cb3e53f8b853ae0cd22a827dda.png我就知道你“在看”7fe98ab7aae1caf6dbf00bf0261dce50.gif
    展开全文
  • 我们会遇到需要处理文件上传和下载的情况,我们可以使用Jmeter来完成文件的上传下载处理,本文提供两个小示例来展示如何使用Jmeter完成文件上传和文件下载并保存的功能首先来看看普通的Http接口请求的过程:...
  • Django上传下载文件接口

    千次阅读 2018-12-21 17:26:37
    1.上传文件接口 1.1 上传文件页面 uploads.html &amp;amp;lt;!DOCTYPE html&amp;amp;gt; &amp;amp;lt;html lang=&amp;quot;en&amp;quot;&amp;amp;gt; &amp;amp;lt;head&amp;amp...
  • 前端下载文件接口无法设置请求头前言问题 前言 项目渗透性测试报出问题:请求url后面不允许带上token,解决方案是将token放在请求头的Authorization中 问题 问题:原先下载资源的方式是window.location.url = url ...
  • 按照一般请求接口,配置好接口地址以及参数,点击Send and Download 按钮,执行请求的同时会下载文件
  • 当然你也可以利用ftplib从ftp站点下载文件。此外Python还提供了另外一种方法requests。下面来看看三种方法是如何来下载zip文件的:方法一:import urllibimport urllib2import requestsprint "downloading ...
  • 背景:后端封装第三方的接口,供前端...对于不同的文件格式,在请求头,和响应头的ContentType,进行指定。图片,文本,视频,音频也都是一样的道理。 @RestController @RequestMapping("/api") public class D...
  • JAVA使用浏览器下载文件接口

    千次阅读 2018-10-16 14:05:00
    前端页面调用后台接口,使用浏览器默认下载的方法。 public ResponseEntity&lt;byte[]&gt; test() throws Exception { String Path = "";//要下载文件路径 File file = new File(Path); ...
  • 上传文件 @RequestMapping(value = "/upload", method = RequestMethod.POST) public ResultVO upload(@RequestParam("file") MultipartFile file) throws IOException { if (!file.isEmpty()) { upload(file); ...
  • 下载文件被调用接口: @PostMapping("/download") @Transactional public ResponseEntity<byte[]> downloadFile(@Valid @RequestBody XXXVo vo) throws IOException { if(null==vo){ return new Response...
  • SpringBoot+Axios 下载文件接口

    千次阅读 2019-05-05 16:57:00
    额…毕竟本人不是专职做后台的,因此这里只是做一个SpringBoot接口代码笔记。 以下为源码: 后台Controller package org.csu.drugcombserver.controller; import org.apache.tomcat.util.http.fileupload.IOUtils; ...
  • 本文介绍了几种常用的python下载文件的方法,具体使用到了htttplib2,urllib等包,希望对大家有帮忙。1.简单文件下载使用htttplib2,具体代码如下:h = httplib2.Http()url = "//www.jb51.net/ip.zip"resp...
  • 想用uni.downloadFile(OBJECT)接口下载App的安装包和升级包,但是不知道如何下载Java后台返回的二进制文件。假设要下载文件是一张图片,参数中的url如果可以直接在浏览器中打开显示成图片,则能成功获取并下载,...
  • 我们会遇到需要处理文件上传和下载的情况,我们可以使用Jmeter来完成文件的上传下载处理,本文提供两个小示例来展示如何使用Jmeter完成文件上传和文件下载并保存的功能首先来看看普通的Http接口请求的过程:...
  • * 下载文件到本地 * @param url 第三方接口地址 * @param fileId 文件key * @param fileUrlName 下载到本地的路径+文件名 */ public static void download(String url,String fileId,String fileUrlName){ ...
  • .Net WebAPI 高速下载文件接口实现

    千次阅读 2017-09-30 14:03:54
    接触WebAPI一年多了,感觉是个承上启下,开创未来的技术。老一辈程序员写接口就像写...在开发的过程中遇到了一些问题,大部分都可通过百度找到解决方案,但是有一个问题却一直没有很好地解决,那就是文件下载速度的问
  • 下载文件名总是response,这个postman的小bug
  • 环境需在项目建一个public文件夹以及public文件夹下面有一个text.txt文件 const express = require("express"); const app = express(); app.get("/", (req, res) => { res.send("Hello world"); }); app.all(...
  • 使用feign调用远程接口下载文件报错[img=https://img-bbs.csdn.net/upload/202103/05/1614912591_441557.png][/img]但是如果直接调用文件下载的接口就不会有错,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,433
精华内容 5,373
关键字:

下载文件接口