diff options
-rw-r--r-- | backends/networking/sdl_net/reader.cpp | 19 | ||||
-rw-r--r-- | backends/networking/sdl_net/reader.h | 3 |
2 files changed, 19 insertions, 3 deletions
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 |