Golang实现web文件共享服务

很简单,只需要两行代码。

http.Handle("/", http.FileServer(http.Dir("./"))) //把当前文件目录作为共享目录

http.ListenAndServe(":8080", nil)

这时候,通过浏览器打开 http://ip 地址:8080 就可以了。

也许这样就完了,但是我为了方便非程序员用户使用,还需要程序自动获取本机的内网ip地址,最后浏览器自动打开这个地址。

获取内网ip地址

func GetIntranetIp() (r []string) {

addrs, err := net.InterfaceAddrs()

if err != nil {

log.Fatal(err)

}

for _, address := range addrs {

if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {

if ipnet.IP.To4() != nil {

r = append(r, ipnet.IP.String())

}

}

}

return

}

本机浏览器自动打开这个地址

loclstr := fmt.Sprintf("http://%s:8080", ip地址)

cmd := exec.Command("cmd", "/C", "start "+loclstr)

cmd.Run()

完整代码

package main

import (

"fmt"

"log"

"net"

"net/http"

"os/exec"

"time"

)

func main() {

address := GetIntranetIp()

fmt.Println("本机ip地址列表:")

for _, item := range address {

fmt.Println(item)

}

http.Handle("/", http.FileServer(http.Dir("./")))

fmt.Printf("蕊蕊老师文件共享服务开启,监听8080端口\n请使用浏览器打开:http://ip地址:8080,eg:http://%s:8080\n请不要关闭此程序,祝使用愉快\n", address[0])

go func() {

time.Sleep(2000)

loclstr := fmt.Sprintf("http://%s:8080", address[0])

cmd := exec.Command("cmd", "/C", "start "+loclstr)

cmd.Run()

}()

if err := http.ListenAndServe(":8080", nil); err != nil {

fmt.Println("err:", err)

}

}

func GetIntranetIp() (r []string) {

addrs, err := net.InterfaceAddrs()

if err != nil {

log.Fatal(err)

}

for _, address := range addrs {

if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {

if ipnet.IP.To4() != nil {

r = append(r, ipnet.IP.String())

}

}

}

return

}

本文分享自微信公众号 - PHP技术大全(phpgod)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法与编程之美

前端|JavaScript库

在使用JavaScript的时候,为了更加方便快捷的完成一些项目,通常会引用一些框架(库)。目前广受欢迎的库有:jQuery、Prototype、MooTool...

8920
来自专栏达达前端

【一起来烧脑】读懂WebApp知识体系

很多小白知道什么是app,但是却不知道什么是webapp呢,webapp是指用HTML5编写的移动web应用

10730
来自专栏达达前端

【一起来烧脑】读懂JQuery知识体系

在现在就业的过程中,会运用JQuery是你的加分项,那么什么是JQuery,嗯,jquery是JavaScript的函数库,是一种轻量级的JavaScript库...

10730
来自专栏算法与编程之美

JS|JavaScript库

在使用JavaScript的时候,为了更加方便快捷的完成一些项目,通常会引用一些框架(库)。目前广受欢迎的库有:jQuery、Prototype、MooTool...

12820
来自专栏Happy的分享

【快学springboot】13.操作redis之String数据结构

在之前的文章中,讲解了使用redis解决集群环境session共享的问题【快学springboot】11.整合redis实现session共享,这里已经引入了r...

10110
来自专栏测试人生

用jQuery做自动化测试是怎样一种感觉

就元素定位方法,除了我们常用并熟知的8种元素定位方法之外,还有一种定位方法可以说是一种特殊的存在。

13720
来自专栏小闫笔记

JavaScript高级

首先更正一个小问题,昨天的JavaScript入门一文中,末尾的“网页换肤”这个小案例的代码插入的有问题,插入的是名片案例的代码,排版不严谨向您致歉,现在补发更...

12130
来自专栏热爱IT

八大数据分析模型之——事件模型(二)

诸葛君说:在日常的数据分析中,常用的有8大模型:用户模型(点我回顾)、事件模型、漏斗分析模型、热图分析模型、自定义留存分析模型、粘性分析模型、全行为路径分析模型...

16010
来自专栏宋先生的Coding之旅

Bootstrap: 简单使用

http://www.bootcss.com,下载用于生产环境的Bootstrap即可。

12740
来自专栏PHP自学中心

PHP自动(智能)识别地址到表单

地址自动识别现在普遍,特别是用在快递填写地址,姓名,手机号码的时候,会把这些按照一定的规范填写后,点击自动识别后,会自动填写到各自的input。最近也简单的实现...

61410

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励