From 83957c9666fce2e4b536c0974f22fc70f57b119c Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Thu, 7 Jul 2016 18:32:12 +0600 Subject: CLOUD: Determine file's name in POST --- backends/networking/sdl_net/reader.cpp | 19 +++++++++++++++++-- backends/networking/sdl_net/reader.h | 3 ++- 2 files changed, 19 insertions(+), 3 deletions(-) (limited to 'backends') diff --git a/backends/networking/sdl_net/reader.cpp b/backends/networking/sdl_net/reader.cpp index 452520abfe..025f53492a 100644 --- a/backends/networking/sdl_net/reader.cpp +++ b/backends/networking/sdl_net/reader.cpp @@ -42,6 +42,7 @@ Reader::Reader() { _contentLength = 0; _availableBytes = 0; + _isFileField = false; _isBadRequest = false; } @@ -143,7 +144,21 @@ void Reader::handleHeaders(Common::String headers) { debug("FIELD NAME: >>%s<<", _currentFieldName.c_str()); //find out field type - //_fieldIsFile = true; + _currentFileName = ""; + readFromThatUntilLineEnd(headers.c_str(), "filename=\"", _currentFileName); + for (uint32 i = 0; i < _currentFileName.size(); ++i) + if (_currentFileName[i] == '\"') { + _currentFileName.erase(i); + break; + } + + if (!_currentFileName.empty()) { + _isFileField = true; + _queryParameters[_currentFieldName] = _currentFileName; + debug("FILE NAME: >>%s<<", _currentFileName.c_str()); + } else { + _isFileField = false; + } } } @@ -270,7 +285,7 @@ bool Reader::readContent() { } void Reader::handleFileContent(Common::String filename) { - _attachedFiles[_currentFieldName] = filename; + _attachedFiles[_currentFileName] = filename; } void Reader::handleValueContent(Common::String value) { diff --git a/backends/networking/sdl_net/reader.h b/backends/networking/sdl_net/reader.h index e5ef523ee9..74fcd4320f 100644 --- a/backends/networking/sdl_net/reader.h +++ b/backends/networking/sdl_net/reader.h @@ -54,7 +54,8 @@ class Reader { uint32 _contentLength; Common::String _boundary; uint32 _availableBytes; - Common::String _currentFieldName; + Common::String _currentFieldName, _currentFileName; + bool _isFileField; bool _isBadRequest; bool readHeaders(); //true when ended reading -- cgit v1.2.3