神奇的go語言(image網站開發)

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。


【 聲明:著作權,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】


    有過python web開發經驗的朋友,相信對它的便利性肯定印象非常深刻。其實利用go語言對web網站進行開發也是非常容易的一件事情。之前我對web開發的經驗也為0,但是使用go語言之後,你可以在最短的時間內搭建一個網站。

  

    為了學習的方便,大家可以直接從github上下載到本篇部落格談到的所有代碼。同時,文章中的代碼部分引用了《go語言編程》中的代碼內容,在此一併表示感謝。本次內容的地址在這,有興趣的同學可以下載看一下。


    從目錄上看,代碼的內容非常簡單。picture.go包含了所有的互動代碼,list.html和upload.html則包含了使用到的模板檔案,而uploads目錄則儲存了所有上傳的image檔案。


    首先看看picture.go代碼內容,

package mainimport "io"import "log"import "os"import "net/http"import "html/template"import "io/ioutil"const (UPLOAD_DIR = "./uploads")func uploadHandler (w http.ResponseWriter, r * http.Request) {if r.Method == "GET" {t, _ := template.ParseFiles("upload.html")t.Execute(w, nil)}else {f, h, _ := r.FormFile("image")filename := h.Filenamedefer f.Close()t, _ := os.Create(UPLOAD_DIR + "/" + filename)defer t.Close()_, err := io.Copy(t, f)if err != nil {return}http.Redirect(w, r, "view?id=" + filename, http.StatusFound)}}func viewHandler(w http.ResponseWriter, r* http.Request) {imageId := r.FormValue("id")imagePath := UPLOAD_DIR + "/" + imageIdw.Header().Set("Content-Type", "image")http.ServeFile(w, r, imagePath)}func listHandler(w http.ResponseWriter, r* http.Request) {fileInfoArr, _ := ioutil.ReadDir(UPLOAD_DIR)locals := make(map[string] interface{})images := []string{}for _, fileInfo := range fileInfoArr {images = append(images, fileInfo.Name())}locals["images"] = imagest, _ := template.ParseFiles("list.html")t.Execute(w, locals)}func main() {http.HandleFunc("/upload", uploadHandler)http.HandleFunc("/view", viewHandler)http.HandleFunc("/", listHandler)err := http.ListenAndServe(":9090", nil)if err != nil {log.Fatal("ListenAndServe: ", err.Error())}}
  

    其實這個網站主要就3個網頁。一個是顯示所有圖片的索引,一個是圖片顯示,另外一個就是圖片上傳頁面。


    下面看看,upload.html內容有哪些?

<!doctype html><html><head><meta charset = "utf-8"><tilte> Uploader </title></head><body><form method="post" action="/upload" enctype="multipart/form-data">Choose an image to upload: <input name="image" type="file" /><input type="submit" value="Upload" /></form></body></html>
   

   有過前端開發經驗的朋友肯定一眼就看出來了,這其實就是個簡單的登入上傳頁面。那麼list.html又是什麼東西呢? 

<!doctype html><html><head><meta charset="utf-8"><title> List </title></head><body><ol>{{range $.images}}<li><a href="/view?id={{.|urlquery}}"> {{.|html}} </a> </li>{{end}}</ol></body></html>
 

    上面的網頁與其說是一個網頁,倒不如說是一個模板。因為所有的images內容其實都要從外界進行傳遞的,而這所有的內容才會構成一個真正的網頁,不知道我說清楚了沒有。


    上面的網站簡單而清晰,有興趣的朋友可以好好看一看。

    




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.