Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Follow the bootstrap procedure in the tutorial to setup a KLone-app.
We will create two files (but you can merge them if you really want to):
- the first file
upload.htmlcontains just the HTML tags needed to the browser to display the file selection widget;
<!-- upload.html --> <body> <form method="post" enctype="multipart/form-data" action="filesubmit.kl1"> <b>Select the input file below:</b><p> <input type="file" name="input_file" value=""> <input type="submit" name="submit"> </form> </body>
- the second file
filesubmit.kl1is the actual KLone script that extract the file information from the request object and displays its name and size.
<!-- filesubmit.kl1 --> <body> <% char filename[U_FILENAME_MAX], client_filename[U_FILENAME_MAX]; char mime_type[MIME_TYPE_BUFSZ]; size_t file_sz;
/* disable client side caching */ response_disable_caching(response);
if(!request_get_arg(request, "submit")) goto footer; /* error */
/* get the uploaded file */ if(request_get_uploaded_file(request, "input_file", 0, filename, client_filename, mime_type, &file_sz)) goto footer; /* error */
io_printf(out, "mime_type: %s <p>", mime_type); io_printf(out, "temporary filename: %s <p>", filename); io_printf(out, "client filename: %s <p>", client_filename); io_printf(out, "file size: %u <p>", file_sz);
/* do something with the file... e.g.: * (void) u_copy(filename, "/tmp/uploaded_file"); */ footer: %> </body>
The difference between the
client_filename params is that the former is the path to a temporary file stored on the server disk (something like
/tmp/file134234) while the latter is the name of the file on the client machine (
Note that the
input_file string in the
request_get_uploaded_file() function call is the name of the
INPUT tag in the above form; so if you want to add more the one file upload per page just add another
INPUT tag with a different name and call
request_get_uploaded_file() again with the proper name argument.
If, otherwise, you want to upload more then one file with the same
INPUT name param you can use the
idx argument of
request_get_uploaded_file() to iterate over the list of uploads.