Возможно, загадочный заголовок. Позвольте мне объяснить
У меня есть Go сервер. Пользователи могут загружать фотографии. Сервер берет эти фотографии и сохраняет их в сетевой папке, которая указывает на файл c. server.Testing с localhost все работает нормально. Однако при использовании моего телефона, подключенного к локальной сети, .write ([] bytes) выдает мне сообщение об ошибке Z: /xxx.jpg: сетевое соединение было прервано локальной системой.
Я вижу, что он получил байты, успешно проверяющие с помощью len ([] байтов). Сохранение на локальный диск работает нормально.
Я не могу найти причину, по которой это произойдет. Так как программа получает байты Как это можно отличить, если они пришли с локального или через другое устройство?
Вот фрагмент из моего кода
file, _, err := r.FormFile("uploadFile")
defer file.Close()
fileBytes, err := ioutil.ReadAll(file)
filetype := http.DetectContentType(fileBytes)
switch filetype {
case "image/jpeg", "image/jpg":
case "image/gif", "image/png":
case "application/pdf":
break
default:
renderError(w, "INVALID_FILE_TYPE", http.StatusBadRequest)
return
}
fileName := randToken(12)
fileEndings, err := mime.ExtensionsByType(filetype)
if err != nil {
renderError(w, "CANT_READ_FILE_TYPE", http.StatusInternalServerError)
log.Print(err)
return
}
newPath := uploadPath + fileName + fileEndings[0]
newFile, err := os.Create(newPath)
defer newFile.Close()
if _, err := newFile.Write(fileBytes); err != nil || newFile.Close() != nil{
fmt.Println(err)
}
//success