Child pages
  • WOFileUpload
Skip to end of metadata
Go to start of metadata

Introduction

The WOFileUpload element allows you to add an <input type=file> HTML element into your form, hence letting your users upload files to your server. This element must be inside an HTML form (WOForm) element and the enctype binding of the form must be set to "multipart/form-data" (see the examples).

Starting with WebObjects 5.2, it is possible to stream file uploads so that the entire file is not stored in memory on the server while being uploaded.

Usage

WOFileUpload {
  filePath=aPath;
  data=fileData;
  [inputStream=fileName];
  [bufferSize=sizeKB];
  [outputStream=fileName];
  [streamToFilePath=filePath];
  [overwrite=[boolean]];
  [finalFilePath=filePath];
}

Bindings

Binding Name

Binding Type

In/Out

Required

Description

filePath

String

in

Yes

The name of the file being uploaded, including the full path when the client is on Windows. To get only the name of the file without the full path, you can use

NSPathUtilities.lastPathComponent(filePath)

data

NSData

out

No

The file being uploaded will be stored in a NSData object. Please note that the entire file will be in-memory, so beware of out-of-memory errors if users upload large files.

inputStream

String

in

No

The binding will be set to an InputStream that points to the file upload. Note that the input stream points directly to the multipart request body part incoming stream and thus you must consume this input stream and close it inside the current request action logic. If you use this binding, you can only have one WOFileUpload element in your form, and it have to be the last element of the form and the form's multipleSubmit attribute must be set to false. Our advice, just use streamToFilePath.

bufferSize

int

in

No

Sets the size (in bytes) of the buffer used by the outputStream and streamToFilePath attributes. The default buffer size is 512KB. There is no reasonable restriction on the buffer size.

outputStream

String

out

No

WebObjects copies the file upload data from the content to the outputStream specified by this attribute.

streamToFilePath

String

in

No

WebObjects writes the file upload data from the content directly to the file path specified in this attribute. This is an atomic operation---the data is written to a temporary file, which is renamed when the process is complete.

overwrite

boolean

in

No

When streamToFilePath is specified, this binding determines whether WebObjects should overwrite an existing file. Defaults to false.

finalFilePath

String

out

No

When streamToFilePath is specified, its value is set to the actual file location (it may differ from the streamToFilePath value if there is a problem renaming the file).

Examples

Java methods

 

WOD-style

 

Inline bindings (WOOGNL)

<wo:form enctype = "multipart/form-data">

  <wo:fileUpload streamToFilePath="$streamPathLocation"
                 overwrite="true"
                 filePath="$clientFilePath"
                 finalFilePath="$finalFilePath" />

</wo:form>

Related documents

ERXWOFileUpload
AjaxFileUpload
NSPathUtilities.lastPathComponent
ERAttachment
Database vs Filesystem
Localization and Internationalization

  • No labels