go iris框架文件上传下载
在 Iris 框架中,可以使用内置的 iris 包中的 Context 对象来处理文件上传和下载。以下是一个简单的示例代码:
package main import (
"github.com/kataras/iris/v12"
) func main() {
app := iris.New() // 处理文件上传
app.Post("/upload", func(ctx iris.Context) {
file, info, err := ctx.FormFile("file")
if err != nil {
ctx.StatusCode(iris.StatusBadRequest)
ctx.WriteString(err.Error())
return
}
defer file.Close() // 保存文件到本地
err = ctx.SaveFormFile(file, "./uploads/" + info.Filename)
if err != nil {
ctx.StatusCode(iris.StatusInternalServerError)
ctx.WriteString(err.Error())
return
} ctx.WriteString("文件上传成功")
}) // 处理文件下载
app.Get("/download", func(ctx iris.Context) {
filename := ctx.URLParam("filename") // 打开文件
file, err := os.Open("./uploads/" + filename)
if err != nil {
ctx.StatusCode(iris.StatusNotFound)
ctx.WriteString("文件不存在")
return
}
defer file.Close() // 设置响应头信息
ctx.Header("Content-Disposition", "attachment; filename=" + filename)
ctx.Header("Content-Type", "application/octet-stream")
ctx.Header("Content-Length", strconv.FormatInt(info.Size(), 10)) // 将文件写入响应
_, err = io.Copy(ctx.ResponseWriter(), file)
if err != nil {
ctx.StatusCode(iris.StatusInternalServerError)
ctx.WriteString(err.Error())
return
}
}) app.Run(iris.Addr(":8080"))
}
上述代码中,/upload 路由处理文件上传,将文件保存到本地的 ./uploads 目录下。/download 路由处理文件下载,先打开本地文件,然后设置响应头信息,最后将文件内容写入响应体中。
go iris框架文件上传下载的更多相关文章
- ssh框架文件上传下载
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- Struts 框架 之 文件上传下载案例
Struts 框架 文件上传 1. 先准备 Struts 环境 (我使用的是struts 2.3.4版本) 导jar包:
- springmvc文件上传下载简单实现案例(ssm框架使用)
springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭 ...
- Struts的文件上传下载
Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...
- 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)
艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...
- NetworkComms 文件上传下载和客户端自动升级(非开源)
演示程序下载地址:http://pan.baidu.com/s/1geVfmcr 淘宝地址:https://shop183793329.taobao.com 联系QQ号:3201175853 许可:购 ...
- SpringMVC文件上传下载
在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/q ...
- FastDFS实现文件上传下载实战
正好,淘淘商城讲这一块的时候,我又想起来当时老徐让我写过一个关于实现FastDFS实现文件上传下载的使用文档,当时结合我们的ITOO的视频系统和毕业论文系统,整理了一下,有根据网上查到的知识,总结了一 ...
- 2013第38周日Java文件上传下载收集思考
2013第38周日Java文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...
随机推荐
- 如何在现有的Vue项目中嵌入 Blazor项目?
目前官方只提供了angular和react俩种示例,所以本教程将来讲解如何在Vue的现有项目中使用,上期已经做好了react的教材! 准备流程 Vue 项目创建流程 使用Vue创建一个Demo项目 全 ...
- java 入门与进阶P-6.3+P-6.4
包裹类型 对于基本数据类型,Java提供了对应的包裹(wrap)类型.这些包裹类型将一个基本数据类型的数据转换成对象的形式,从而使得它们可以像对象一样参与运算和传递.下表列出了基本数据类型所对应的包裹 ...
- 【Python】bytes和hex字符串之间的相互转换
十六进制字符串:a="CC DD 01 61 F6 01 00 64 A4 81 00 00 00 8B" b=bytes.fromhex(a) 转为字节 from socket ...
- drf-认证、权限、频率、过滤、排序、分页
1.认证组件 1.1 局部认证 1.首先写两个接口,一个查询单个一个查询所有,我们利用视图扩展类和视图子类写在一个视图类上: views.py: from rest_framework.viewset ...
- 一次生产环境CPU占用高的排查
1. 项目背景 甲方是保密级别非常高的政府部门.所以我们全程拿不到任何测试数据,只能是自己模拟数据进行测试. 项目部署的时候,公司派了一人到甲方现场,在甲方客户全程监督下,进行部署,调试,导入数据等工 ...
- NetCore使用ZipFile 和ZipOutputStream
一.序言 环境:NetCore 3.1 项目类型:Web 二.使用ZipFile压缩本地文件 var filePath = Directory.GetCurrentDirectory() + $@&q ...
- jsp传入servlet数据
面对老师的19级期末,要用到jsp传入servlet的数据传输,借鉴了其他人的代码,以下是我的程序 jsp界面: <%request.getSession().setAttribute(&quo ...
- 注释、input()、运算符、组织结构(顺序、选择、循环)
注释 单行注释 # 多行注释 将三对引号之间的为多行注释 ''' ''' 中文编码的声明注释 #coding:gbk input()函数 接受来自用户的输入 返回值是str 值的存储 使用=对输入的值 ...
- Redhat7.6搭建LAMP环境
关闭防火墙和 selinux# systemctl stop firewalld systemctl disable firewalld 禁用 Selinux vim /etc/selinux/con ...
- NETAPP硬盘更换
netapp硬盘新增 一.找到坏盘,插上新盘# 1.登陆到想要点亮的硬盘相对应的控制器上,并进去高级模式. priv set advanced 2.利用disk show -v 查看想要点亮的硬盘名字 ...