Vibe.d: Implementing file upload with WEB interface
    aberba via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Mon Jan  9 11:36:18 PST 2017
    
    
  
So I implemented a file upload at 
https://aberba.github.io/2016/form-upload-in-vibe-d/. I'm trying 
to understand how HTTPServerRequest req.files can be accessed 
when using the web interface (Porting the same example to use 
vibe.d WEB interface).
I couldn't find the implementation details in the vibed.org docs 
either.
import vibe.d;
static this()
{
     auto router = new URLRouter;
     router.get("*", staticTemplate!"index.dt");
     router.post("/upload", &upload);
     auto settings = new HTTPServerSettings;
     settings.port = 8080;
     settings.bindAddresses = ["::1", "127.0.0.1"];
     listenHTTP(settings, router);
     logInfo("Server Running");
}
void upload(HTTPServerRequest req, HTTPServerResponse res)
{
     // File upload here
     auto file = "document" in req.files;
     try {
         moveFile(file.tempPath, Path("./public/uploads") ~ 
file.filename);
         logInfo("Uploaded successfully!");
     } catch (Exception e) {
         logInfo("Exception thrown, trying copy");
         copyFile(file.tempPath, Path("./public/uploads") ~ 
file.filename);
     }
     res.redirect("/");
}
    
    
More information about the Digitalmars-d-learn
mailing list