示例#1
0
func ArticlesHandler(w http.ResponseWriter, r *http.Request) {
	logger.Log("console", "request", "["+time.Unix(time.Now().Unix(), 0).Format("2006-01-02 15:04:05")+"]["+
		r.RemoteAddr+"]["+r.UserAgent()+"]["+r.Host+r.RequestURI+"]")

	p, err := strconv.Atoi(r.URL.Query().Get("p"))
	if err != nil {
		p = 1
	}
	size := 10
	offset := (p - 1) * size

	items, count, err := service.FindArticles(offset, size)
	if err != nil {
		http.NotFound(w, r)
		return
	}
	model := make(map[string]interface{})
	model["timestamp"] = time.Unix(time.Now().Unix(), 0).Format("20060102150405")
	model["token"] = utils.GetRandomString(20)
	model["keywords"] = ""
	model["description"] = ""

	model["title"] = "Insert title here"

	model["items"] = items

	max, _ := strconv.ParseInt(strconv.Itoa(offset+size), 10, 64)

	var next int
	if max < count {
		next = p + 1
	} else {
		next = p
	}
	model["next"] = next

	var pre int
	if p > 1 {
		pre = p - 1
	} else {
		pre = 1
	}
	model["pre"] = pre

	ExecuteTemplate(w, "articles", model)
}
示例#2
0
func ArticleByIdHandler(w http.ResponseWriter, r *http.Request, action string) {
	id, err := strconv.Atoi(action)
	if err != nil {
		http.NotFound(w, r)
		return
	}
	item, err := service.FindArticleById(id)
	if err != nil {
		http.NotFound(w, r)
		return
	}
	model := make(map[string]interface{})
	model["keywords"] = "" + item.Keywords
	model["description"] = "" + item.Description
	model["lang"] = "" + item.Lang
	model["type"] = "" + item.Tag

	model["timestamp"] = time.Unix(time.Now().Unix(), 0).Format("20060102150405")
	model["token"] = utils.GetRandomString(20)

	model["item"] = item
	model["title"] = item.Title
	ExecuteTemplate(w, "view", model)
}
示例#3
0
/*
 * upload
 */
func UploadHandler(w http.ResponseWriter, r *http.Request) {

	if r.Method == "GET" {
		http.NotFound(w, r)
		return
	}
	if r.Method == "POST" {
		timestamp := r.URL.Query().Get("timestamp")
		token := r.URL.Query().Get("token")
		md := r.URL.Query().Get("md")

		if "w8ARe4rISz8d3UdjSM9k" != token || "" == timestamp {
			http.NotFound(w, r)
			return
		}

		if !CheckCookie(w, r, "upload") {
			http.NotFound(w, r)
			return
		}

		r.ParseForm()
		r.ParseMultipartForm(32 << 20)

		multipart := r.MultipartForm
		if multipart == nil {
			log.Println("Not MultipartForm.")
			w.Write(([]byte)("Not MultipartForm."))
			return
		}

		fileHeaders, findFile := multipart.File["file"]
		if !findFile || len(fileHeaders) == 0 {
			log.Println("No file befor uploading.")
			w.Write(([]byte)("No file befor uploading."))
			return
		}

		var items []FileItem = make([]FileItem, 0)
		for _, v := range fileHeaders {
			fileName := v.Filename

			fileExt := filepath.Ext(fileName)
			if checkContentType(fileExt) == false {
				log.Println("Content type refused.")
				w.Write(([]byte)("Content type refused."))
				return
			}

			src, err := v.Open()
			checkError(err, "Open file error."+fileName)
			defer src.Close()

			realPath := uploadDir + conf.PathSeparator + utils.GetRandomString(20) + fileExt

			output := RootDir + conf.PathSeparator + realPath
			dst, err := os.OpenFile(output, os.O_WRONLY|os.O_CREATE, 0666)
			checkError(err, "Open local file error")
			defer dst.Close()
			io.Copy(dst, src)

			var item FileItem
			item.Path = strings.Replace(realPath, conf.PathSeparator, "/", -1)
			//
			if "true" == md {
				w.Write([]byte(item.Path))
				return
			}
			//
			item.OriginName = fileName
			items = append(items, item)
		}

		model := make(map[string]interface{})
		model["result"] = items
		model["size"] = len(fileHeaders)
		model["stautsCode"] = "200"
		enc := json.NewEncoder(w)
		enc.Encode(model)
	}
}