モバイル インターネットの普及に伴い、写真に対する人々の需要が高まっています。イベントでも旅行でもパーティーでも写真撮影は欠かせません。これらの写真をどのように展示するかも悩みの種となっている。フォトウォール機能を実装するアプリができましたので、今回はgolang言語を使ってフォトウォールを実装する手順を紹介します。
1. Golang 言語の特徴
golang は、Google によって開発されたオープンソース言語です。主な機能は次のとおりです:
2. デザインのアイデア
フォト ウォール機能を実装するときは、次の点を考慮する必要があります:
3. 技術的な実装
始める前に、まず環境を準備する必要があります。 golang の公式 Web サイトから golang インストール パッケージをダウンロードできます。インストールが完了したら、ターミナルに次のコードを入力して、インストールが成功したかどうかを確認します:
$ go version
ユーザーがアップロードした写真を保存するデータベースを設計する必要があるため、次のフィールドを含むテーブルを設計する必要があります:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>照片上传</title> </head> <body> <input type="file" id="file"> <input type="text" id="tag"> <button onclick="upload()">上传</button> </body> <script> function upload() { var file = document.getElementById("file").files[0]; var tag = document.getElementById("tag").value; var formData = new FormData(); formData.append("file", file); formData.append("tag", tag); var xhr = new XMLHttpRequest(); xhr.open("POST", "/upload", true); xhr.onload = function () { if (xhr.readyState == 4 && xhr.status == 200) { alert("上传成功"); } else { alert("上传失败"); } } xhr.send(formData); } </script> </html>
func upload(w http.ResponseWriter, r *http.Request) { file, handler, err := r.FormFile("file") if err != nil { fmt.Println(err) return } defer file.Close() tag := r.FormValue("tag") fileName := handler.Filename f, err := os.OpenFile("./upload/"+fileName, os.O_WRONLY|os.O_CREATE, 0666) if err != nil { fmt.Println(err) return } defer f.Close() io.Copy(f, file) insertData(fileName, "./upload/"+fileName, tag) w.Write([]byte("上传成功")) }
func getPhotos(w http.ResponseWriter, r *http.Request) { tag := r.FormValue("tag") var photos []Photo if tag == "" { db.Find(&photos) } else { db.Where("tag=?", tag).Find(&photos) } result := make([]string, len(photos)) for i, photo := range photos { result[i] = photo.Path } jsonBytes, err := json.Marshal(result) if err != nil { fmt.Println(err) return } w.Write(jsonBytes) }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>照片墙</title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js"></script> <style> .photo { width: 200px; margin: 10px; } </style> </head> <body> <input type="text" id="tag"> <button onclick="getPhotos()">搜索</button> <div id="container"> <div class="grid-sizer"></div> </div> </body> <script> function getPhotos() { var tag = document.getElementById("tag").value; $.ajax({ url: "/getPhotos", type: "GET", data: {"tag": tag}, success: function (data) { var html = ""; for (var i = 0; i < data.length; i++) { html += '<div class="photo"><img src="' + data[i] + '"></div>'; } $("#container").html(html); var $container = $('#container'); $container.imagesLoaded(function () { $container.masonry({ itemSelector: ".photo", columnWidth: ".grid-sizer", gutter: 10 }); }); } }); } </script> </html>
以上がGolang がフォトウォールを実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。