Scot's Scripts FAQs and Module Support

If you don't find the answers here contact us.
Documentation and support for our Miva modules is found here. If you can't find the answer you're looking for contact us and we'll add the information.

Miva Script 101 / Upload with Mivascript

Upload with Mivascript

This is another learn-from-source-code example. You can also download the file.

The source code below (and in the zip file) is a simple upload script that not only uploads a file, but gives you explanations of each of the various upload parameters and variables you can use to help process the file. It's more useful to compile the script and run it on your own than it is to read the source code below.

<MvCOMMENT>
###############################################################################
Disclaimer: This is for informative purposes only. If you use it and your world
blows up it is NOT my fault.
 
Scot Ranney, Scot's Scripts (http://www.scotsscripts.com)
 
Step One: call the user_input() function.
 
Step Two: let Miva engine take over.
###############################################################################
</MvCOMMENT>
 
<MvASSIGN NAME = "l.ok" VALUE = "{ user_input() }">
 
<MvFUNCTION NAME = "user_input" PARAMETERS = "">
<FORM ACTION="{ s.documenturl }" METHOD="POST" ENCTYPE="multipart/form-data">
Please enter a filename to upload or select a file using the Browse button<br>
<INPUT TYPE="FILE" NAME="session_id:1234">
<INPUT TYPE="SUBMIT" value="Upload Now">
</FORM>
</MvFUNCTION>
 
<MvCOMMENT>
###############################################################################
Miva_ValidateFileUpload(..) is a required function that Miva uses to make sure
the upload is legal.  This function doesn't normally have a lot to do except
check for filesize and such.
 
If you want to limit an upload filesize, then return the max size of the file
you want to upload. Otherwise a 0 will upload any file, and a -1 will skip this file.
###############################################################################
</MvCOMMENT>
 
<MvFUNCTION NAME="Miva_ValidateFileUpload" PARAMETERS="field,filename,content_type">
<MvFUNCRETURN VALUE="{0}">
</MvFUNCTION>
 
<MvCOMMENT>
###############################################################################
Miva_ProcessFileUpload is the gutz of the upload. This is where you do everything
to the file after it has been uploaded.  I can't stress enough the importance of the
FIELD variable as it is what makes this upload powerful.
###############################################################################
</MvCOMMENT>
 
<MvFUNCTION NAME="Miva_ProcessFileUpload" PARAMETERS="field,filename,status,tempfile,content_type,size">
<html>
<body>
<table border="1" cellspacing="3">
<TR>
<TD><B>Information:</b></td>
<TD>&nbsp;</td>
<TD>The following information is what you get to use to determine everything about the file upload unless you put info into a database or something like that before the upload and then use the FIELD to track the session id so you can retrieve it all.</td>
</tr>
<TR>
<TD><B>Field</B>:</td>
<TD><MvEVAL EXPRESSION = "{field}"></td>
<TD>The field is what you used for the <i>NAME</i> in the user_input function above.  This is how you can send session variables and other information through the upload process.  This is probably the most important field to remember how to use.</td>
</tr>
<TR>
<TD><B>Filename</B>:</td>
<TD><MvEVAL EXPRESSION = "{filename}"></td>
<TD>This is the actual filename that the user uploaded.  It includes the entire path so you'll have to parse the filename out of the path if you need the actual filename.</td>
</tr>
<TR>
<TD><B>Status</B>:</td>
<TD><MvEVAL EXPRESSION = "{status}"></td>
<TD>It will be SKIPPED, COMPLETE, or PARTIAL, depending on what you did in the Miva_ValidateFIleUpload function.</td>
</tr>
<TR>
<TD><B>Tempfile</B>:</td>
<TD><MvEVAL EXPRESSION = "{tempfile}"></td>
<TD>This is the name of the file as Miva knows it after the upload.  This is where you use the <B>FRENAME </B>or <B>FSRENAME </B>functions to move or copy the file to an appropriate location with an appropriate filename, possibly built off your information in the <i>FIELD</i> variable.</td>
</tr>
<TR>
<TD><B>Content Type</B>:</td>
<TD><MvEVAL EXPRESSION = "{content_type}"></td>
<TD>The type of file.  If you knew the codes you could figure out, for example, if it was a JPG or GIF image.</td>
</tr>
<TR>
<TD><B>Size</B>:</td>
<TD><MvEVAL EXPRESSION = "{size}"></td>
<TD>The total size of the file that was uploaded. If it stopped in the middle of the upload, then the size would be a partial size.</td>
</tr>
</table>
<hr>
 
Renaming the tempfile, <B><MvEVAL EXPRESSION = "{tempfile}"></b>, to the session_id of <MvEVAL EXPRESSION = "{gettoken(field,':',2)}">.<br>
(for this we are using the <i>gettoken(...)</i> like this: <b>gettoken(field,':',2)</b> which will take the information after the : in the field variable.<P>
 
<MvASSIGN NAME = "l.ok" VALUE = "{ frename(tempfile,gettoken(field,':',2)) }">
 
<MvIF EXPRESSION = "{l.ok}">
File rename successful.<P>
<MvELSE>
File rename unsuccessful.<P>
</MvIF>
All done!
 
</body>
</html>
</MvFUNCTION>
updated April 23, 2013