1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/suzong-SixImageServer

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
handle.go 2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
林夕 Отправлено 28.11.2018 18:10 5e314db
package helper
import (
"github.com/gorilla/mux"
"net/http"
"os"
"io"
"log"
)
//上传 post
func UploadHandler(w http.ResponseWriter, r *http.Request) {
//随机生成一个不存在的fileid
var imgid string
for{
imgid=MakeImageID()
//不是重复的id 不存在
if !FileExist(ImageID2Path(imgid)){
break
}
}
//上传参数为uploadfile
r.ParseMultipartForm(32 << 20)
file, _, err := r.FormFile("uploadfile")
if err != nil {
log.Println(err)
w.Write([]byte("Error:上传错误》获取文件"))
return
}
defer file.Close()
//检测文件类型
buff := make([]byte, 512)
_, err = file.Read(buff)
if err != nil {
log.Println(err)
w.Write([]byte("Error:上传错误》读取文件"))
return
}
filetype := http.DetectContentType(buff)
if filetype!="image/jpeg"{
w.Write([]byte("Error:上传错误》不是JPEG"))
return
}
//回绕文件指针
if _, err = file.Seek(0, 0); err!=nil{
log.Println(err)
}
//提前创建整棵存储树(如果不进行存储树结构创建,下面的文件创建不会成功)。
if err=BuildTree(imgid); err!=nil{
log.Println(err)
}
//将文件写入ImageID指定的位置
f, err := os.OpenFile(ImageID2Path(imgid), os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
log.Println(err)
w.Write([]byte("Error:上传错误》保存错误"))
return
}
defer f.Close()
io.Copy(f, file)
w.Write([]byte(imgid))
}
//下载 get
func DownloadHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
imageid := vars["imgid"]
if len([]rune(imageid)) != 16 {
w.Write([]byte("Error:下载错误》图片ID不正确"))
return
}
imgpath := ImageID2Path(imageid)
///fmt.Println(imgpath)
if !FileExist(imgpath) {
w.Write([]byte("Error:下载错误》图片不存在"))
return
}
http.ServeFile(w, r, imgpath)
}
//首页输出
func HomeHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("<html><body><center><h1>It Works!</h1></center><hr><center>Six Image Server</center></body></html>"))
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/suzong-SixImageServer.git
git@api.gitlife.ru:oschina-mirror/suzong-SixImageServer.git
oschina-mirror
suzong-SixImageServer
suzong-SixImageServer
master