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文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...
随机推荐
- 自己的devc++的语法配置
效果如下
- strapi系列--如何自定义非界面化的接口,定制化自己的业务逻辑
为什么要进行后端定制呢? 在实际开发过程中,项目中有些需求是不需要创建界面化接口的,需要我们定制化自己的业务逻辑,那么我们该如何处理这个需求呢?本文以图文并茂的形式,定制一个我们自己的业务逻辑接口. ...
- 当LOGO设计与世界文化擦出火花——JJQ的LOGO设计之路
<当LOGO设计与世界文化碰撞出火花--论 JJQ 的LOGO是如何制成的> (友链:https://tg.hszxoj.com/user/475) 首先我们对jjq对应的汉字进行拉长 ...
- 【随笔记】XR872 Codec 驱动移植和应用程序实例(附芯片调试方法)
XR872 的 SDK 是我目前接触过那么多款 MCU 的 SDK 中,唯一一个将框架和 RTOS 结合的非常完美的 SDK .无论是代码风格还是框架的设计,看起来都很赏心悦目,而且是源码开源.希望能 ...
- C#实现聊天消息渲染、图文混排(支持Windows、Linux)
在实现聊天软件时,渲染文字表情图文混排是一项非常繁琐的工作,再加上还要支持GIF动图.引用消息.撤回消息.名片等不同样式的消息渲染时,就更加麻烦了. 好在我们可以使用 ESFramework 提供的 ...
- AI 制作 3D 素材|基于 AI 5 天创建一个农场游戏,第 3 天
欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用 AI 工具在 5 天内创建一个功能完备的农场游戏.到本系列结束时,您将了解到如何将多种 AI 工具整合到游戏开发流程中.本文将向您展示如何将 A ...
- 使用pycharm打开sqlite的问题
目录 问题:有同学在sqlite数据库文件执行数据库迁移完成前,点开了他,导致sqlite数据库被pycharm当成文本文件打开了,并且不会改了. 其实sqlite文件和电脑中的其他文件(xx.mp4 ...
- KingbaseES函数三态
理解函数的三态1 VOLATILE: volatile函数没有限制,可以修改数据(如执行delete,insert,update), 使用同样的参数调用可能返回不同的值. STABLE: 不允许修改数 ...
- ES字段类型
1 String ELasticsearch 5.X之后的字段类型不再支持string,由text和keyword取代,不做说明. 2 text和keyword 2.1 简介 ElasticSearc ...
- osx安装mpd和ncmpcpp
简介 mdp 是一款开源的音乐播放软件, 全名为 media player daemon , 从字面意思理解, 就是一个后台播放进程. 不同于传统的音乐播放软件集成了播放解码和界面, mpd 只是一个 ...