[mapguide-commits] r9684 - sandbox/jng/ogc_viewer_representation/Web/src/DevHttpServer

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Fri Jul 24 04:01:42 PDT 2020


Author: jng
Date: 2020-07-24 04:01:41 -0700 (Fri, 24 Jul 2020)
New Revision: 9684

Modified:
   sandbox/jng/ogc_viewer_representation/Web/src/DevHttpServer/main.cpp
Log:
DevHttpServer: Add file upload support, needed by mapagent operations like APPLYRESOURCEPACKAGE

Modified: sandbox/jng/ogc_viewer_representation/Web/src/DevHttpServer/main.cpp
===================================================================
--- sandbox/jng/ogc_viewer_representation/Web/src/DevHttpServer/main.cpp	2020-07-23 15:42:41 UTC (rev 9683)
+++ sandbox/jng/ogc_viewer_representation/Web/src/DevHttpServer/main.cpp	2020-07-24 11:01:41 UTC (rev 9684)
@@ -147,11 +147,27 @@
         param->AddParameter(key, value);
     }
 
-    //TODO: Handle files
     for (const auto& f : req.files)
     {
         STRING key = MgUtil::MultiByteToWideChar(f.first);
-        
+        auto file = f.second;
+        if (file.filename.empty())
+        {
+            STRING value = MgUtil::MultiByteToWideChar(file.content);
+            param->AddParameter(key, value);
+        }
+        else
+        {
+            STRING fileName = MgFileUtil::GenerateTempFileName();
+            Ptr<MgByteSource> byteSource = new MgByteSource((BYTE_ARRAY_IN)file.content.c_str(), (INT32)file.content.length());
+            Ptr<MgByteReader> reader = byteSource->GetReader();
+            Ptr<MgByteSink> sink = new MgByteSink(reader);
+            sink->ToFile(fileName);
+
+            param->AddParameter(key, fileName);
+            //tempfile is a hint to the MgHttpRequest for it to create a MgByteSource from it
+            param->SetParameterType(key, L"tempfile");
+        }
     }
 }
 



More information about the mapguide-commits mailing list