Проблема при сохранении файла в сетевую папку при получении файла по локальной сети - Golang - PullRequest
0 голосов
/ 12 апреля 2020

Возможно, загадочный заголовок. Позвольте мне объяснить

У меня есть 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
...