CLOUD: Determine file's name in POST

This commit is contained in:
Alexander Tkachev 2016-07-07 18:32:12 +06:00
parent c82ed40fdd
commit 83957c9666
2 changed files with 19 additions and 3 deletions

View file

@ -42,6 +42,7 @@ Reader::Reader() {
_contentLength = 0; _contentLength = 0;
_availableBytes = 0; _availableBytes = 0;
_isFileField = false;
_isBadRequest = false; _isBadRequest = false;
} }
@ -143,7 +144,21 @@ void Reader::handleHeaders(Common::String headers) {
debug("FIELD NAME: >>%s<<", _currentFieldName.c_str()); debug("FIELD NAME: >>%s<<", _currentFieldName.c_str());
//find out field type //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) { void Reader::handleFileContent(Common::String filename) {
_attachedFiles[_currentFieldName] = filename; _attachedFiles[_currentFileName] = filename;
} }
void Reader::handleValueContent(Common::String value) { void Reader::handleValueContent(Common::String value) {

View file

@ -54,7 +54,8 @@ class Reader {
uint32 _contentLength; uint32 _contentLength;
Common::String _boundary; Common::String _boundary;
uint32 _availableBytes; uint32 _availableBytes;
Common::String _currentFieldName; Common::String _currentFieldName, _currentFileName;
bool _isFileField;
bool _isBadRequest; bool _isBadRequest;
bool readHeaders(); //true when ended reading bool readHeaders(); //true when ended reading