@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".