bool DeployMonitor::fileDownload(MonitorWorker *mw, Properties &props)
{
	trace_enter();

	string fileName = props.getProperty("file.name");
	int fileSize = props.getInt("payloadSize");
	int rSize;
	unsigned char buf[FILE_BUF_SIZE];

	string filePath = createDeployPath(fileName);
	string mode("wb");
	OSFile f;

	trace("[fileDownload] filepath=" << filePath << ", fileSize==" << fileSize);

	if (f.open(filePath, mode) == false) {
		trace("File open error");
		mw->returnFail("deploy", "file.download", "File open error");
		return false;
	}

	int wlen = 0;
	try {
		while (fileSize > 0) {
			rSize = fileSize > FILE_BUF_SIZE ? FILE_BUF_SIZE : fileSize;
			rSize = mw->read(buf, rSize);
			wlen += f.write(buf, rSize);

			fileSize -= rSize;
		}

		mw->returnOK("deploy", "file.download", "ok");
		f.close();

		trace("[fileDownload] End : fileSize=" << fileSize << ", writeSize=" << wlen);

		return true;
	}
	catch (exception &ex) {
		mw->returnFail("deploy", "file.download", ex.what());
	}

	f.close();
	return false;
}