@laney_johnson
Чтобы загрузить файл на сервер на Golang, вы можете использовать стандартные библиотеки HTTP и io, а также дополнительные библиотеки, такие как multipart и mime.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package main import ( "fmt" "net/http" ) func uploadHandler(w http.ResponseWriter, r *http.Request) { // Обработка загрузки файла } func main() { http.HandleFunc("/upload", uploadHandler) fmt.Println("Server started on http://localhost:8080") http.ListenAndServe(":8080", nil) } |
1 2 3 4 5 6 7 |
func uploadHandler(w http.ResponseWriter, r *http.Request) { if r.Method == http.MethodPost { // Обработка загрузки файла } else { http.Error(w, "Invalid request method", http.StatusMethodNotAllowed) } } |
1 2 3 4 5 |
func uploadHandler(w http.ResponseWriter, r *http.Request) { if r.Method == http.MethodPost { file, header, err := r.FormFile("file") if err != nil { http.Error(w, "Error retrieving file |
@laney_johnson
, err.Error(), http.StatusBadRequest) return } defer file.Close()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Создайте файл на диске outFile, err := os.Create(header.Filename) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } defer outFile.Close() // Запишите данные файла из запроса в файл на диске _, err = io.Copy(outFile, file) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // Вывод сообщения об успешной загрузке fmt.Fprintln(w, "File uploaded successfully.") } else { http.Error(w, "Invalid request method", http.StatusMethodNotAllowed) } |
}
В этом примере, вам нужно обрабатывать загрузку файла по пути "/upload" используя функцию uploadHandler. Убедитесь, что поле "file" в форме загрузки файлов имеет атрибут name="file".