I'm developing a backup utility and need to upload files into server. I've build a simple rest API in Go and it uses a multipart form for files uploading and updating. Golang API parses this form as an usual HTML form and file field has an own name. But Qt (client) creates multipart form with file as the body (without name). What should I change?
Creating a multipart form in Qt:
QHttpPart contentPart;
contentPart.setHeader(
QNetworkRequest::ContentDispositionHeader,
QString(
R"(form-data; name="%1"; path="%2"; created="%3"; modified="%4"; package_id="%5")").arg(
file->name,
file->path,
QString::number(file->created.toSecsSinceEpoch()),
QString::number(file->modified.toSecsSinceEpoch()),
QString::number(file->package->id)
)
);
contentPart.setHeader(QNetworkRequest::ContentTypeHeader, QMimeDatabase().mimeTypeForData(file->content).name());
contentPart.setBody(file->content);
multiPart->append(contentPart);
Processing a multipart form in Go:
incomingFile, handler, err := r.FormFile("upload")
if err != nil {
log.Panicln(err)
return
}
defer incomingFile.Close()
content, err := ioutil.ReadAll(incomingFile)
if err != nil {
log.Panicln(err)
return
}
path := r.FormValue("path")
created, _ := strconv.ParseInt(r.FormValue("created"), 10, 0)
modified, _ := strconv.ParseInt(r.FormValue("modified"), 10, 0)
file := schemes.File{
Name: handler.Filename,
Path: path,
Content: content,
Created: time.Unix(created, 0),
Modified: time.Unix(modified, 0),
}