В настоящее время я пишу мод для VR-игры Beat Sabre , который берет воспроизведение игры игрока и загружает его на сервер Express Node.JS для хранения.Однако всякий раз, когда я загружаю воспроизведение (сохраненное как JSON), мой сервер возвращает req.body
как пустой объект, а req.file
не определено.
Я использую bodyparser
для анализа JSON и multer
для анализа файлов внутри моего кода Express.
Я попытался:
- WWWForm
- System.Net.Http (через NuGet)
- Hashtablesи словари для заполнения WWWForm (вместо
form.AddField()
) - UnityWebRequest
Используя Postman для проверки кода моего сервера, сервер прекрасно обрабатывает запросы Postman, поэтому я пришел к выводучто это проблема на стороне клиента.
C # Код загрузки:
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormDataSection(string.Format("songName={0}&songSubName={1}&authorName={2}&difficulty={3}", songName, songSubName, authorName, difficulty)));
formData.Add(new MultipartFormFileSection("replayData", Encoding.UTF8.GetBytes(builder.ToString() /*Compressed JSON*/), "file", "application/json"));
UnityWebRequest w = UnityWebRequest.Post("http://caed.jackz.me/ghostmode/UploadReplay", formData);
w.SetRequestHeader("Content-Type", "application/json; charset=utf8");
w.chunkedTransfer = false; //Some of this code was trial and error through others question
UnityWebRequestAsyncOperation request = w.SendWebRequest();
request.completed += uploadComplete;
Экспресс код:
app.post("/ghostmode/UploadReplay", upload.array(), (req,res) => {
console.log(moment.tz(moment(), "America/Los_Angeles").format("h:mm:ss A"));
console.log(req.body); //bodyparser.json()
console.log(req.files); //multer
});
Вывод на консоль сервера всегда был
7:54:07 PM //Timestamp so I know when its from
{} //req.body via bodyparser
undefined //req.files via multer