Golang实现web文件共享服务的示例代码

本文主要介绍了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
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 解决Golang在Web开发时前端莫名出现的空白换行

    问题: 在使用Golang做Web开发时,有时候渲染出来的模板在前台显示时会出现一些奇怪的空白换行,具体特征就是查看css样式表并没有相关定义的空白部分. 分析: 查看出现问题页面的网页源代码,复制空白换行部分转码为Unicode编码,发现其中包含了\u2028这样的字符[图一].  [图一] 另外,直接在浏览器检查里边的html选择Edit as html,也可发现在空白处存在小红点,鼠标移上会直接显示该字符是\u2028[图二].查阅资料发现,这样的换行符在JavaScript中并不支持.

  • golang搭建静态web服务器的实现方法

    我胡汉三又回来啦.好久没发文了,为保持平台上的活跃度,我今天就分享下个刚学到的知识,使用golang搭建静态web服务器,亲测可用,附代码! 使用过golang语言的程序猿都应该知道,在使用golang开发的时候,我们是不需要诸如iis,apache,nginx,kangle等服务器支持的. 为什么呢? 原因是,golang的net/http包中已经提供了HTTP的客户端与服务端实现方案. 网上言论都说golang不适合做web开发,相对php.java..net.nodejs等各类后端语言来说

  • golang基于websocket实现的简易聊天室程序

    本文实例讲述了golang基于websocket实现的简易聊天室.分享给大家供大家参考,具体如下: 先说点无关的,最近忙于工作没有更新博客,今天休息顺便把golang websocket研究了一下,挺好玩的,写了一个聊天室,分享给大家. websocket包 : code.google.com/p/go.net/websocket 文档 : http://go.pkgdoc.org/code.google.com/p/go.net/websocket 首先安装websocket包 复制代码 代码

  • Golang实现web文件共享服务的示例代码

    本文主要介绍了Golang实现web文件共享服务的示例代码,分享给大家,具体如下: 很简单,只需要两行代码. http.Handle("/", http.FileServer(http.Dir("./"))) //把当前文件目录作为共享目录 http.ListenAndServe(":8080", nil) 这时候,通过浏览器打开 http://ip 地址:8080 就可以了. 也许这样就完了,但是我为了方便非程序员用户使用,还需要程序自动获取本

  • Spring Boot 实现Restful webservice服务端示例代码

    1.Spring Boot configurations application.yml spring: profiles: active: dev mvc: favicon: enabled: false datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/wit_neptune?createDatabaseIfNotExist=true&useUnicode=true&

  • 10行Python代码实现Web自动化管控的示例代码

    本博客将为各位分享Python Helium库,其是在 Selenium库基础上封装的更加高级的 Web 自动化工具,它能够通过网页端可见的标签.名称来和 Web 进行交互,据说比Selenium库简单50%,Helium库主要功能包括:模拟鼠标点击.滑动功能:模拟键盘按键功能:刷新网页功能等. 通过使用Helium库,了解其基本的API使用,即使不熟悉HTML.CSS等网页知识,也可轻松完成网页自动化开发设计,实现学习.工作所需. 1.模块安装 Helium库安装使用pip指令即可实现,如下所

  • c# 通过内存映射实现文件共享内存的示例代码

    内存映射文件是利用虚拟内存把文件映射到进程的地址空间中去,在此之后进程操作文件,就像操作进程空间里的地址一样了,比如使用c语言的 memcpy等内存操作的函数.这种方法能够很好的应用在需要频繁处理一个文件或者是一个大文件的场合,这种方式处理IO效率比普通IO效率要高 共享内存是内存映射文件的一种特殊情况,内存映射的是一块内存,而非磁盘上的文件.共享内存的主语是进程(Process),操作系统默认会给每一 个进程分配一个内存空间,每一个进程只允许访问操作系统分配给它的哪一段内存,而不能访问其他进程

  • Springboot整合mqtt服务的示例代码

    首先在pom文件里引入mqtt的依赖配置 <!--mqtt--> <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.4</version> </dependency> 其次在springboot 的配置yml文件,配

  • Golang发送http GET请求的示例代码

    使用标准库http来实现 package tools import ( "io/ioutil" "net/http" ) func Get(url string)string{ res, err :=http.Get(url) if err != nil { return "" } robots, err := ioutil.ReadAll(res.Body) res.Body.Close() if err != nil { return &qu

  • Golang实现常见排序算法的示例代码

    目录 前言 五种基础排序算法对比 1.冒泡排序 2.选择排序 3.插入排序 4.快速排序 前言 现在的面试真的是越来越卷了,算法已经成为了面试过程中必不可少的一个环节,你如果想进稍微好一点的公司,「算法是必不可少的一个环节」.那么如何学习算法呢?很多同学的第一反应肯定是去letcode上刷题,首先我并不反对刷题的方式,但是对于一个没有专门学习过算法的同学来说,刷题大部分是没什么思路的,花一个多小时暴力破解一道题意义也不大,事后看看别人比较好的解法大概率也记不住,所以我觉得「专门针对算法进行一些简

  • Golang接入钉钉通知的示例代码

    目录 设置与接入 发送消息 设置与接入 1.创建一个钉钉群 2.打开群设置,智能群助手,添加机器人,自定义Webhook接入 3.设置机器人名字,开启消息推送,复制Webhook地址 4.安全设置,选择自定义关键词,最多可添加十个 发送消息 采用post方式向上面复制的地址发送请求即可 消息协议:https://open.dingtalk.com/document/robots/message-types-and-data-format /* -- @Time : 2022/6/8 11:24

  • JQuery以JSON方式提交数据到服务端示例代码

    JQuery将Ajax数据请求进行了封装,从而使得该操作实现起来容易许多.以往我们要写很多的代码来实现该功能,现在只需要调用$.ajax()方法,并指明请求的方式.地址.数据类型,以及回调方法等.下面的代码演示了如何将客户端表单数据封装成JSON格式,然后通过JQuery的Ajax请求将数据发送到服务端,并最终将数据存储到数据库中.服务端定义为一个.ashx文件,事实上你可以将服务端定义为任何能接收并处理客户端数据的类型,如Web Service,ASP.NET Page,Handler等. 首

  • 使用Spring Boot创建Web应用程序的示例代码

    在这篇文章中,我们将探讨使用Spring Boot创建Web应用程序的细节. 我们将探索Spring Boot如何帮助你加速应用程序开发. 我们将使用Spring Boot构建一个简单的Web应用程序,并为其添加一些有用的服务. 1. 介绍 启动一个新项目的主要挑战之一是该项目的初始设置. 我们需要对不同的目录结构进行调用,并且需要确保我们遵循所有行业标准.对于使用Spring Boot创建Web应用程序,我们需要以下工具: 我们自己喜欢的IDE (我将使用IntelliJ) Maven JDK

随机推荐