千家信息网

使用golang怎么实现一个文件上传服务

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,使用golang怎么实现一个文件上传服务,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。package mainimpor
千家信息网最后更新 2025年01月31日使用golang怎么实现一个文件上传服务

使用golang怎么实现一个文件上传服务,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

package mainimport (        "encoding/json"        "io"        "math/rand"        "net/http"        "os"        "strconv"        "strings"        "time")const POS = "."const DIR = "/"const PATH = "image"const HTTP = "https://www.image.com"func getFileName(ext string) string {        random := rand.New(rand.NewSource(time.Now().UnixNano()))        datetime := time.Now().Format("200612")        dstPath := PATH + DIR + datetime        dstFile := dstPath + DIR + datetime + strconv.Itoa(random.Int()) + POS + strings.Replace(ext, DIR, POS, 1)        _, err := os.Stat(dstPath)        res := os.IsNotExist(err)        if res == true {                os.MkdirAll(dstPath, os.ModePerm)        }        return dstFile}func uploadFile(w http.ResponseWriter, r *http.Request) {        r.ParseMultipartForm(10 << 20)        file, handler, err := r.FormFile("myFile")        if err != nil {                w.WriteHeader(500)                return        }        defer file.Close()        fileName := getFileName(handler.Header.Get("Content-Type"))        fp, err := os.OpenFile(fileName, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)        if err != nil {                w.WriteHeader(500)                return        }        defer fp.Close()        size, err := io.Copy(fp, file)        if err != nil {                w.WriteHeader(500)                return        }        go callUploadResult(w, fileName, size)}func callUploadResult(w http.ResponseWriter, fileName string, size int64) {        var list = make(map[string]string)        list["image"] = HTTP + DIR + fileName        list["size"] = strconv.FormatInt(size/1024, 10) + "KB"        list["action"] = "call-upload-result"        jsonStr, _ := json.Marshal(list)        w.Header().Set("Content-Type", "application/json")        w.Write([]byte(jsonStr))}func main() {        http.HandleFunc("/upload", uploadFile)        http.ListenAndServe("127.0.0.1:8090", nil)}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

0