Golan http静态服务器

main.go

package main

import (
	"fmt"
	"io"
	"log"
	"net/http"
	"os"
	"strconv"
	"strings"
	"time"
)

func main() {
	config := readConfig()
	log.Println("start")
	http.Handle("/", http.FileServer(http.Dir(config.Wwwroot)))
	http.Handle("/download/", http.StripPrefix("/download/", http.FileServer(http.Dir(config.Downloadpath))))
	http.HandleFunc("/upload", upload)
	http.HandleFunc("/upload2", upload2)

	http.ListenAndServe(":"+config.Port, nil)
}

type Sizer interface {
	Size() int64
}

func upload(writer http.ResponseWriter, r *http.Request) {
	file, fileheader, _ := r.FormFile("file_1")
	defer file.Close()
	config := readConfig()
	newfile, _ := os.Create(config.Uploadpath + fileheader.Filename)
	defer newfile.Close()
	io.Copy(newfile, file)
	fmt.Fprintf(writer, "上传文件的大小为: %d", file.(Sizer).Size())
}

func upload2(writer http.ResponseWriter, r *http.Request) {
	log.Println("upload2 started.")
	file, fileheader, _ := r.FormFile("file")
	defer file.Close()
	config := readConfig()

	str_time := strings.Replace(fileheader.Filename, "IMG_", "", -1)
	str_time = strings.Replace(str_time, "VID_", "", -1)
	var folder string
	t, error := time.Parse("20060102", str_time[0:8])

	if error == nil {
		folder = config.PhotoPath + strconv.Itoa(t.Year()) + "/" +
			strconv.Itoa(int(t.Month())) + "月/" + strconv.Itoa(t.Day()) + "日/"
		//folder := config.PhotoPath + str_time[0:4] + "/" + str_time[4:6] + "月/" + str_time[6:8] + "日/"
	} else {
		folder = config.Uploadpath
	}
	os.MkdirAll(folder, os.ModeDir)
	log.Println(folder + fileheader.Filename)

	newfile, _ := os.Create(folder + fileheader.Filename)
	defer newfile.Close()
	_, error2 := io.Copy(newfile, file)
	if error2 == nil {
		fmt.Fprintf(writer, "%s", fileheader.Filename)
		return
	}

	log.Println("error: " + error2.Error())
	fmt.Fprintf(writer, "error: %s", error2.Error())
}

 

myConfig.go

package main

import (
	"encoding/json"
	"io/ioutil"
	"log"
)

//定义结构体
//首字母大写 , json:"msg_id" 是 tag
type MyConfig struct {
	Wwwroot      string `json:"wwwroot"`
	Uploadpath   string `json:"uploadpath"`
	Downloadpath string `json:"downloadpath"`
	PhotoPath    string `json:"photopath"`
	Port         string `json:"port"`
}

func readConfig() MyConfig {
	var config MyConfig
	filename := `./aa.json`
	bytes, _ := ioutil.ReadFile(filename)
	err := json.Unmarshal(bytes, &config)
	if err != nil {
		log.Fatal(err)
	}
	//log.Println(config.Wwwroot)
	return config
}

  

serialize.go

package main

import (
	"encoding/json"
	"fmt"
)

//定义结构体
//首字母大写 , json:"msg_id" 是 tag
type Message struct {
	MsgId   string `json:"msg_id"`
	Content string `json:"content"`
}

//json 序列号反序列化
func T3_1() {
	msg := Message{"msgid_001", "contente2222222222"}
	str, err := json.Marshal(msg)
	//输出 {"msg_id":"msgid_001","content":"contente2222222222"}
	fmt.Println(string(str), err)

	var msg1 Message
	//  str := `{"changes": [{"armid":3,"Index":5}, {"armid":3,"Index":6}]}`
	//反序列化为 stuct
	err = json.Unmarshal(str, &msg1)
	//输出 {msgid_001 contente2222222222}
	fmt.Println(msg1)
	//反序列化为map
	var msg2 map[string]string
	err = json.Unmarshal(str, &msg2)
	//输出 map[msg_id:msgid_001 content:contente2222222222]
	fmt.Println(msg2)
}

  

aa.json

{
"wwwroot":"./wwwroot/",
"uploadpath":"./up/",
"downloadpath":"./down/",
"photopath":"./Record/",
"port":"80"
}

  

时间: 2024-10-24 21:27:39

Golan http静态服务器的相关文章

搭建Http静态服务器环境

搭建静态网站,首先需要部署环境.下面的步骤,将告诉大家如何在服务器上通过 Nginx 部署 HTTP 静态服务. 安装 Nginx yum install nginx -y 启动:nginx ok 完成后访问访问 http://119.29.232.198 可以看到 Nginx 的测试页面 Nginx 命令详解:http://blog.csdn.net/aidenliu/article/details/6413342 配置静态服务器访问路径 打开 Nginx 的默认配置文件 /etc/nginx

用http-server 创建node.js 静态服务器

今天做一本书上的例子,结果代码不能正常运行,查询了一下,是语法过时了,书其实是新买的,出版不久. 过时代码如下 var connect=require('connect'); connect.createServer( connect.static("../angularjs") ).listen(5000); 错误提示:connect.static不是一个方法 由于我的目的是练习angularjs,不是学习nodejs,所以不去深究,只要能建立一个简单的服务器就行 在网上搜到的方法是

面向于初学者的Node.js学习笔记 01 搭建静态服务器

希望这篇文章能解决你这样一个问题:“我现在已经了解了一些Node.Js基本概念了,怎么搭一台静态服务器呢?” 请参考一下博主的前两篇文章: 完全面向于初学者的Node.js指南 Node.Js的Module System 以及一些常用 Module 本文实现的效果(样式就没做了,大家将就下): 列出的代码均测试可用,大家放心. What is static server? 静态服务器,有了它呢,就可以让外部访问到咱们的静态网页.在功能上:它可以给用户发送文件(如:HTML, CSS, Js等).

node04---fs文件操作、静态服务器

08fs.js var http = require("http"); var fs = require("fs"); var server = http.createServer(function(req,res){ //不处理小图标 if(req.url == "/favicon.ico"){ return; } //给用户加一个五位数的id var userid = parseInt(Math.random() * 89999) + 100

基于Node.js搭建静态服务器

作者:zhanhailiang 日期:2014-11-23 原理: 通过解析请求url来解析到相应文件路径: 判断文件是否存在: 若存在,则读取文件内容输出: 实现: var path = require('path'), fs = require('fs');   require('http').createServer(function(req, res) { // 解析文件路径,默认以当前目录为根目录查找文件 // 这里可以通过配置root值来做为相对根目录查找文件 var file =

nginx 一二事(2) - 创建虚拟静态服务器

一.什么是nginx 是一个C语言开发的HTTP反向代理服务器,性能非常高 一个俄罗斯的哥们开发的,官方提供的测试性能能够达到5W的并发,我的天呐~,实际测试差不多是2W,而淘宝的牛人可以优化到200W 运行效率非常好,占用的资源也非常低,运行稳定 二.Nginx的应用场景 有哪些 1.http服务器:Nginx是一个http服务可以独立提供http服务,可以做网页静态服务器,你可以放一些静态资源,比如HTML, JS, CSS, 图片 2.虚拟主机:可以实现在一台服务器虚拟出多个网站,同时使用

最简单的方式创建node.js 静态服务器

http-server 首先需要 全局安装 http-server npm install -g http-server http-server 启动 http-server -a 127.0.0.1 -p 7070 http-server 关闭 按 ctrl c 上面的一句命令启动了一个node.js 的静态服务器. 监听本地 7070 端口. 静态目录就是当前运行 命令所在的目录 如果你的当前项目中存在 public 文件夹,那么默认静态目录会指定到 public 如果没有 public 文

腾讯云,搭建Http静态服务器环境

任务时间:15min ~ 30min 搭建静态网站,首先需要部署环境.下面的步骤,将告诉大家如何在服务器上通过 Nginx 部署 HTTP 静态服务. 安装 Nginx 在 CentOS 上,可直接使用 yum 来安装 Nginx yum install nginx -y 安装完成后,使用 nginx 命令启动 Nginx: nginx 此时,访问 http://<您的域名> 可以看到 Nginx 的测试页面 [?] 如果无法访问,请重试用 nginx -s reload 命令重启 Nginx

安装nodeJs静态服务器(NodeJs Express MVC 框架)

安装 NodeJs Express MVC 框架 新建项目文件夹 打开cmd 执行以下操作: 一.使用Express框架 1)安装express3 $: npm install -g [email protected] 2)目录下新建工程 $: express -e staticServer 3)安装所需模块 $: cd staticServer && npm install 这部执行完毕即可启动服务器 $: node app express默认public目录为静态资源目录,可在浏览器中