---
title: "POST Field Reference"
canonical: https://www.aurigma.com/docs/us8/post-field-reference-iuf.htm
product: "Upload Suite 8"
---

# POST Field Reference

Supported technologies: ![Adobe Flash](https://www.aurigma.com/docs/us8/icons/flash.png)![HTML 5](https://www.aurigma.com/docs/us8/icons/html5.png)
 
This topic contains information about POST fields (both standard and custom) which are sent by HTML5/Flash Uploader. Use it when writing the server-side upload processing code. You should extract them in the same manner as if they were sent through the standard HTML form. See [Saving Uploaded Files in HTML5/Flash Uploader ASP.NET](https://www.aurigma.com/docs/us8/saving-uploaded-files-in-aspnet-iuf.htm.md), [Saving Uploaded Files in HTML5/Flash Uploader PHP](https://www.aurigma.com/docs/us8/saving-uploaded-files-in-php-iuf.htm.md), and [Saving Uploaded Files via HTML5/Flash Uploader in Other Platforms](https://www.aurigma.com/docs/us8/saving-uploaded-files-in-other-platforms-iuf.htm.md) topics for more details on how to work with them.

## Standard Fields
 
**Note** 
If you use HTML5/Flash Uploader ASP.NET or HTML5/Flash Uploader PHP you can refer standard fields via the PostFields[PostFields (ASP.NET)](https://www.aurigma.com/docs/us8/FH_T_Aurigma_ImageUploaderFlash_PostFields.htm.md)[PostFields (PHP)](https://www.aurigma.com/docs/us8/FH_T_P_PostFields.htm.md) constants.
 
The table below contains a list of POST fields that are generated and uploaded by HTML5/Flash Uploader.
 
|  Name |  Type |  Description |
| --- | --- | --- |
   |  Upload Information | Upload Information | Upload Information |
 |  **PackageIndex** |  **Integer** |  Zero-based index of the package inside the current upload session.<br> <br>Using this field you can recognize the order of the uploaded files if they were sent in different packages. |
 |  **PackageCount** |  **Integer** |  A total number of packages in the current upload session. |
 |  **PackageGuid** |  **GUID** |  Unique identifier of the current upload session.<br> <br>When the upload is separated into several packages, all of them will have the same GUID. You can use it to determine whether files are uploaded in the same session (useful for concurrent uploads from several users) or not. |
 |  **PackageFileCount** |  **Integer** |  Number of files uploaded in the current package.<br> <br>**Note** <br>HTML5/Flash Uploader sends a one file per package. Therefore, this field is always `1`. |
 |  **RequestComplete** |  **Integer** |  End of request marker. This field is always `1`. |
 |  **PackageComplete** |  **Integer** |  End of package marker. This field is always `1` and is represented only in the last request of a package. |
 |  **RequestCount** |  **Integer** |  Number of requests associated with a package. This field is sent in the end of the package. |
 |  **FilenamesUrlEncoded** |  **Boolean** |  Whether filenames are sent URL-encoded. If yes (i.e.  is true), you should use URL decoding before using those filenames. Useful when files with non-ASCII names are uploaded incorrectly. |
 |  Name |  Type |  Description |
 |  Original File Information | Original File Information | Original File Information |
 |  **SourceName\_*N*** ^\*^ |  **String** |  Name of the original *N*th file.<br> <br>It is useful to employ this field to get the name of the original file when only a resized copy of an image is uploaded. |
 |  **SourceSize\_*N*** ^\*^ |  **Integer** |  Size of the original *N*th file in bytes. |
 |  **SourceCreatedDateTime\_*N*** ^\*^ |  **Time** |  Creation date of the original *N*th file in EXIF-style format:<br> <br>`YYYY:MM:DD hh:mm:ss`<br> <br>For example, *28th of March, 2:40PM* would be:<br> <br>`2005:03:28 14:40:00` |
 |  **SourceLastModifiedDateTime\_*N*** ^\*^ |  **Time** |  The last modification date of the original *N*th file in EXIF-style format:<br> <br>`YYYY:MM:DD hh:mm:ss`<br> <br>For example, *28th of March, 2:40PM* would be:<br> <br>`2005:03:28 14:40:00` |
 |  **SourceCreatedDateTimeLocal\_*N*** ^\*^ |  **Time** |  The local creation date of the original *N*th file in EXIF-style format:<br> <br>`YYYY:MM:DD hh:mm:ss`<br> <br>For example, *28th of March, 2:40PM* would be:<br> <br>`2005:03:28 14:40:00` |
 |  **SourceLastModifiedDateTimeLocal\_*N*** ^\*^ |  **Time** |  The local last modification date of the original *N*th file in EXIF-style format:<br> <br>`YYYY:MM:DD hh:mm:ss`<br> <br>For example, *28th of March, 2:40PM* would be:<br> <br>`2005:03:28 14:40:00` |
 |  **SourceWidth\_*N*** ^\*^ |  **Integer** |  Width of the original *N*th file in pixels if it is an image. Otherwise, this field contains `0`. |
 |  **SourceHeight\_*N*** ^\*^ |  **Integer** |  Height of the original *N*th file in pixels if it is an image. Otherwise, this field contains `0`. |
 |  **HorizontalResolution\_*N*** ^\*^ |  **Integer** |  Horizontal resolution of the original *N*th file if it is an image (measured in *DPI* - dots per inches). Otherwise, this field contains `0`. |
 |  **VerticalResolution\_*N*** ^\*^ |  **Integer** |  Vertical resolution of the original *N*th file if it is an image (measured in *DPI* - dots per inches). Otherwise, this field contains `0`. |
 |  Name |  Type |  Description |
 |  Converted File Information | Converted File Information | Converted File Information |
 |  **File*X*\_*N*** ^\*\*^ |  **File** |  The *X*th converted file for the *N*th user-selected file. |
 |  **File*X*Mode\_*N*** ^\*\*^ |  **String** |  The mode of the *X*th converted file created for the *N*th user-selected file. Possible values are:<br> <ul> <li><code>sourceFile</code> - the <em>X</em>th converted file is a copy of the original file.</li> <li><code>thumbnail</code> - the <em>X</em>th converted file is a resized copy of the original file if it is an image.</li> <li><code>icon</code> - the <em>X</em>th converted file is a system icon associated with the original file type.</li> <li><code>zip</code> - the <em>X</em>th converted file is a ZIP archive of the original file.</li> <li><code>none</code> - the <em>X</em>th converted file was not created.</li> </ul> |
 |  **File*X*Name\_*N*** ^\*\*^ |  **String** |  The name of the *X*th converted file created for the *N*th user-selected file. Depending on the **File*X*Mode\_*N*** field value, this field contains one of the following names:<br> <ul> <li><code><em>name</em>.<em>ext</em></code> for <code>sourceFile</code> mode.</li> <li><code><em>name</em>.<em>ext</em>_Thumbnail<em>X</em>.jpg</code> for <code>thumbnail</code> mode.</li> <li><code><em>name</em>.<em>ext</em>_Icon<em>X</em>.jpg</code> for <code>icon</code> mode.</li> <li><code><em>name</em>.<em>ext</em>_Compressed<em>X</em>.zip</code> for <code>zip</code> mode.</li> </ul> |
 |  **File*X*Size\_*N*** ^\*\*^ |  **Integer** |  Size of the *X*th converted file created for the *N*th user-selected file (in bytes). |
 |  **File*X*Width\_*N*** ^\*\*^ |  **Integer** |  Actual width of the *X*th converted file created for the *N*th uploaded file if it is an image (in pixels). Otherwise, this field contains `-1`.<br> <br>Depending on the converter.thumbnailFitMode[ThumbnailFitMode (ASP.NET)](https://www.aurigma.com/docs/us8/FH_P_Aurigma_ImageUploaderFlash_Converter_ThumbnailFitMode.htm.md)[ThumbnailFitMode (PHP)](https://www.aurigma.com/docs/us8/FH_P_P_Converter_ThumbnailFitMode.htm.md)[thumbnailFitMode (JavaScript)](https://www.aurigma.com/docs/us8/FH_P_J_$au_converter_thumbnailFitMode.htm.md), this value may differ from the value specified through the converter.thumbnailWidth[ThumbnailWidth (ASP.NET)](https://www.aurigma.com/docs/us8/FH_P_Aurigma_ImageUploaderFlash_Converter_ThumbnailWidth.htm.md)[ThumbnailWidth (PHP)](https://www.aurigma.com/docs/us8/FH_P_P_Converter_ThumbnailWidth.htm.md)[thumbnailWidth (JavaScript)](https://www.aurigma.com/docs/us8/FH_P_J_$au_converter_thumbnailWidth.htm.md) property. This happens because HTML5/Flash Uploader preserves the aspect ratio of the image and seldom can use the same dimensions as specified in thumbnail parameters. |
 |  **File*X*Height\_*N*** ^\*\*^ |  Integer |  Actual height of the *X*th converted file created for the *N*th uploaded file if it is an image (in pixels). Otherwise, this field contains `-1`.<br> <br>Depending on the **converter.thumbnailFitMode**, this value may differ from the value specified through the converter.thumbnailHeight[ThumbnailHeight (ASP.NET)](https://www.aurigma.com/docs/us8/FH_P_Aurigma_ImageUploaderFlash_Converter_ThumbnailHeight.htm.md)[ThumbnailHeight (PHP)](https://www.aurigma.com/docs/us8/FH_P_P_Converter_ThumbnailHeight.htm.md)[thumbnailHeight (JavaScript)](https://www.aurigma.com/docs/us8/FH_P_J_$au_converter_thumbnailHeight.htm.md) property. This happens because HTML5/Flash Uploader preserves the aspect ratio of the image and seldom can use the same dimensions as specified in thumbnail parameters. |
 |  **File*X*HashCodeMD5\_*N*** ^\*\*^ |  **String** |  MD5 hash value of the *X*th converted file created for the *N*th user-selected file. Calculated only if you use Converter.Hash[Hash (ASP.NET)](https://www.aurigma.com/docs/us8/FH_P_Aurigma_ImageUploaderFlash_Converter_Hash.htm.md)[Hash (PHP)](https://www.aurigma.com/docs/us8/FH_P_P_Converter_Hash.htm.md)[hash (JavaScript)](https://www.aurigma.com/docs/us8/FH_P_J_$au_converter_hash.htm.md) property. |
 |  **File*X*ChunkIndex\_*N*** ^\*\*^ |  **Integer** |  Zero-based index of this chunk of the *X*th converted file created for the *N*th user-selected file.<br> <br>**Note** <br>This field is sent if UploadSettings.ChunkSize[ChunkSize (ASP.NET)](https://www.aurigma.com/docs/us8/FH_P_Aurigma_ImageUploaderFlash_UploadSettings_ChunkSize.htm.md)[ChunkSize (PHP)](https://www.aurigma.com/docs/us8/FH_P_P_UploadSettings_ChunkSize.htm.md)[chunkSize (JavaScript)](https://www.aurigma.com/docs/us8/FH_P_J_$au_uploadSettings_chunkSize.htm.md) is greater than `0`. |
 |  **File*X*ChunkCount\_*N*** ^\*\*^ |  **Integer** |  Number of chunks of the *X*th converted file created for the *N*th user-selected file.<br> <br>**Note** <br>This field is sent if **ChunkSize** is greater than `0`. |
 |  Name |  Type |  Description |
 |  User Input | User Input | User Input |
 |  **Angle\_*N*** ^\*^ |  **Integer** |  Rotation angle of *N*th user-specified file (measured in degrees clockwise).<br> <br>This field is changed if the user clicks an arrow icon to rotate an image. You can use it if you want to rotate images on the server side (e.g. if you upload only source file). Possible values are:<br> <ul> <li><code>0</code>;</li> <li><code>90</code>;</li> <li><code>180</code>;</li> <li><code>270</code>.</li> </ul> |
 |  **CropBounds\_*N*** ^\*^ |  **String** |  Crop bounds of the *N*th user-selected image in the following format: `x,y,width,height`. For non-image files this field contains `0,0,0,0` value.<br> <br>You can use it if you want to crop images on the server side (e.g. if you upload only original file). |
 |  **Description\_*N*** ^\*^ |  **String** |  User-provided description of the *N*th user-selected file. |
 |  **Tag\_*N*** ^\*^ |  **String** |  Tag attached to the *N*th user-selected file. |
 |  ^\*^ The *N* character appended to the field name is a placeholder for an index of this file in the uploaded package. This index is zero-based. For example, HTML5/Flash Uploader sends one file per package, so to retrieve a name of this file use the **SourceName\_0** field (the same is true for other ***XXX*\_*N*** fields).<br> <br>^\*\*^ HTML5/Flash Uploader can generate up to three converted files per each user-selected file and send them to the server. The *X* character is a placeholder for an index of the converted file created for the *N*th user-selected file. Maximum *X* value is not bigger than the number of converter[Converter (ASP.NET)](https://www.aurigma.com/docs/us8/FH_T_Aurigma_ImageUploaderFlash_Converter.htm.md)[Converter (PHP)](https://www.aurigma.com/docs/us8/FH_T_P_Converter.htm.md)[converter (JavaScript)](https://www.aurigma.com/docs/us8/FH_T_J_$au_converter.htm.md) instances added to the converters[Converters (ASP.NET)](https://www.aurigma.com/docs/us8/FH_P_Aurigma_ImageUploaderFlash_ImageUploaderFlash_Converters.htm.md)[Converters (PHP)](https://www.aurigma.com/docs/us8/FH_P_P_ImageUploaderFlash_Converters.htm.md)[converters (JavaScript)](https://www.aurigma.com/docs/us8/FH_P_J_$au_imageUploaderFlash_converters.htm.md) array. For example, if you set two converters, the following fields will be available on the server: **File0\_0** and **File1\_0**. |

## Custom Fields
 
HTML5/Flash Uploader is able to send not only fields described in the table above, but also custom fields. It can be done in two ways:
 
- Using the Metadata.AdditionalFormName[AdditionalFormName (ASP.NET)](https://www.aurigma.com/docs/us8/FH_P_Aurigma_ImageUploaderFlash_Metadata_AdditionalFormName.htm.md)[AdditionalFormName (PHP)](https://www.aurigma.com/docs/us8/FH_P_P_Metadata_AdditionalFormName.htm.md)[additionalFormName (JavaScript)](https://www.aurigma.com/docs/us8/FH_P_J_$au_metadata_additionalFormName.htm.md) property. You just add the `<form>` element somewhere to your code, add elements to it (`<input>`, `<select>`, ` <textarea>` elements are supported), and set its name as a value of this property. Then HTML5/Flash Uploader automatically appends data from this `<form>` to the request that is sent to the server.
- Using the [metadata.addCustomField(String, String, Boolean)](https://www.aurigma.com/docs/us8/FH_M_J_$au_metadata_addCustomField_3_c43e5881.htm.md) method. It takes the name of a field you want to receive on the server and its value. The most convenient place to use this method is the [BeforeUpload](https://www.aurigma.com/docs/us8/FH_E_ImageUploaderFlash_BeforeUpload.htm.md) event. Any custom fields added via this method can be removed by calling the [metadata.removeCustomField(String)](https://www.aurigma.com/docs/us8/FH_M_J_$au_metadata_removeCustomField_1_007649e6.htm.md) method.

## Overriding POST Field Names
 
Sometimes you may need an additional control over the POST fields sent by the uploader. For example, you already have a server code which expects a particular POST field names, or you don't want the uploader to some fields. For example, if you use it for uploading to CDN or REST API.
 
To address such issues, you may use JavaScript methods described below. For example, the uploader uses them internally to organize uploads to Amazon S3.
 
- [metadata.enableAllStandardFields(Boolean)](https://www.aurigma.com/docs/us8/FH_M_J_$au_metadata_enableAllStandardFields_1_7dfaceb5.htm.md) - turns on/off the upload of all fields except of files and the fields you specify explicitly as explained in a previous section. If you have several converters (e.g. upload a source file and a thumnbail) and your server URL expects only one file, you can use the UploadSettings.UploadConverterOutputSeparately[UploadConverterOutputSeparately (ASP.NET)](https://www.aurigma.com/docs/us8/FH_P_Aurigma_ImageUploaderFlash_UploadSettings_UploadConverterOutputSeparately.htm.md)[UploadConverterOutputSeparately (PHP)](https://www.aurigma.com/docs/us8/FH_P_P_UploadSettings_UploadConverterOutputSeparately.htm.md)[uploadConverterOutputSeparately (JavaScript)](https://www.aurigma.com/docs/us8/FH_P_J_$au_uploadSettings_uploadConverterOutputSeparately.htm.md) to split them to different requests.
- [metadata.enableStandardField(String, Boolean)](https://www.aurigma.com/docs/us8/FH_M_J_$au_metadata_enableStandardField_2_e0636892.htm.md) - turns on/off the upload of a field with a specified name. Note, for custom fields, use the **metadata.removeCustomField(String)**.
- [metadata.renameStandardField(String, String)](https://www.aurigma.com/docs/us8/FH_M_J_$au_metadata_renameStandardField_2_393e8f3d.htm.md) - renames a specified POST field.

## Adding HTTP headers
 
POST fields is not the only way to send something to the server. You can also use HTTP headers. For example, when uploading files to Amazon S3, headers may help to control caching policy, etc.
 
To set headers, use the [metadata.uploadRequestHeaders(Object)](https://www.aurigma.com/docs/us8/FH_M_J_$au_metadata_uploadRequestHeaders_1_8419e710.htm.md) like this:
 ```
var u = $au.imageUploaderFlash("upldr");

// Use it to add new set of headers (it will replace the previously specified headers)
u.metadata().uploadRequestHeaders({'X-My-Header-1': 'Value 1','X-My-Header-2': 'Value 2'
});

// Use it to append another header to the existing headers
var h = u.metadata().uploadRequestHeaders();
h['X-My-Header-3'] = 'Value 3';
u.metadata().uploadRequestHeaders(h);

// Clear all custom HTTP headers from the list
u.metadata().uploadRequestHeaders({});
```
