go gin上传静态文件
简介
https://blog.csdn.net/weixin_46618592/article/details/125570527
就在上周,Go 发布了 GO1.16 版本,此次更新带来了几个新特性,如 embed 原生支持,macos M1 处理器的支持,默认开启 go modules 等等。
在 embed 加入之前,go build 出来的二进制文件默认是不包括非代码文件的,比如开发一个 web 网站,要放到生产服务器运行,我们必须连同配置文件,html 资源文件一起上传到服务器执行,非常的难受。
当然社区也有一些方法实现将资源文件打包到编译后的二进制文件,但比较复杂,go1.16 直接引入 embed 解决了这个问题。今天便来实验下,顺便改造之前写的一个小工具。
实践
之所以写这个工具是因为,做开发的朋友经常会用到原型图,众多原型图工具都有打包成离线版本的功能,以供开发离线分享,但是离线文件传来传去实在是太麻烦了,于是想做一个 zip 上传,后台解压,提供在线版本的功能。
于是用 Gin 简单写了一个简易版本,就只有一个页面:
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传</title>
<!-- import Vue.js -->
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.6/vue.min.js"></script>
<!-- import stylesheet -->
<link href="https://cdn.bootcdn.net/ajax/libs/iview/3.5.5-rc.1/styles/iview.min.css" rel="stylesheet">
<!-- import iView -->
<script src="https://cdn.bootcdn.net/ajax/libs/iview/3.5.5-rc.1/iview.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js"></script>
<style>
#app {
margin: 20px 40px;
}
</style>
</head>
<body>
<div id="app">
<h1>上传原型,获取永久在线浏览地址</h1>
<upload type="drag" action="/upload" paste="true" accept=".zip" :on-success="handleSuccess">
<div style="padding: 20px 0">
<icon type="ios-cloud-upload" size="52" style="color: #3399ff"></icon>
<p>点击或者拖拽上传</p>
</div>
</upload>
<alert type="success" v-for="url in zips">
浏览地址:${ url }
</alert>
<strong>历史prd:</strong>