Changes for page WOFileUpload

Last modified by David Holt on 2012/01/30 22:18

From version 39.3
edited by Pascal Robert
on 2023/11/13 11:56
Change comment: Update document after refactoring.
To version 36.1
edited by Pascal Robert
on 2012/01/30 22:18
Change comment: There is no comment for this version

Summary

Details

Page properties
Parent
... ... @@ -1,1 +1,0 @@
1 -documentation.Home.Development Architecture.Dynamic Elements.WebHome
Content
... ... @@ -1,8 +1,8 @@
1 -{{toc/}}
1 +{{toc}}{{/toc}}
2 2  
3 3  = Introduction =
4 4  
5 -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 ([[doc:documentation.WOForm]]) element and the //enctype// binding of the form must be set to "multipart/form-data" (see the examples).
5 +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).
6 6  
7 7  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.
8 8  
... ... @@ -25,124 +25,32 @@
25 25  
26 26  = Bindings =
27 27  
28 -|=(((
29 -Binding Name
30 -)))|=(((
31 -Binding Type
32 -)))|=(((
33 -In/Out
34 -)))|=(((
35 -Required
36 -)))|=(((
37 -Description
38 -)))
39 -|(((
40 -filePath
41 -)))|(((
42 -String
43 -)))|(((
44 -in
45 -)))|(((
46 -Yes
47 -)))|(((
48 -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
28 +|= Binding Name |= Binding Type |= In/Out |= Required |= Description
29 +| 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 {{code}}NSPathUtilities.lastPathComponent(filePath){{/code}}
30 +| data | NSData | out | No | The file being uploaded will be stored in a [[NSData>>http://www.webobjects.me/API/wo542/com/webobjects/foundation/NSData.html]] object. Please note that the entire file will be in-memory, so beware of out-of-memory errors if users upload large files.
31 +| 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.
32 +| 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.
33 +| outputStream | String | out | No | WebObjects copies the file upload data from the content to the outputStream specified by this attribute.
34 +| 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.
35 +| overwrite | boolean | in | No | When streamToFilePath is specified, this binding determines whether WebObjects should overwrite an existing file. Defaults to false.
36 +| 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).
49 49  
50 -{{code}}
51 -NSPathUtilities.lastPathComponent(filePath)
52 -{{/code}}
38 += Examples =
53 53  
40 +== Java methods ==
54 54  
55 -)))
56 -|(((
42 +{{code}}
57 57  
58 58  
59 -data
60 -)))|(((
61 -NSData
62 -)))|(((
63 -out
64 -)))|(((
65 -No
66 -)))|(((
67 -The file being uploaded will be stored in a [[NSData>>url:http://www.webobjects.me/API/wo542/com/webobjects/foundation/NSData.html||shape="rect"]] object. Please note that the entire file will be in-memory, so beware of out-of-memory errors if users upload large files.
68 -)))
69 -|(((
70 -inputStream
71 -)))|(((
72 -String
73 -)))|(((
74 -in
75 -)))|(((
76 -No
77 -)))|(((
78 -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.
79 -)))
80 -|(((
81 -bufferSize
82 -)))|(((
83 -int
84 -)))|(((
85 -in
86 -)))|(((
87 -No
88 -)))|(((
89 -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.
90 -)))
91 -|(((
92 -outputStream
93 -)))|(((
94 -String
95 -)))|(((
96 -out
97 -)))|(((
98 -No
99 -)))|(((
100 -WebObjects copies the file upload data from the content to the outputStream specified by this attribute.
101 -)))
102 -|(((
103 -streamToFilePath
104 -)))|(((
105 -String
106 -)))|(((
107 -in
108 -)))|(((
109 -No
110 -)))|(((
111 -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.
112 -)))
113 -|(((
114 -overwrite
115 -)))|(((
116 -boolean
117 -)))|(((
118 -in
119 -)))|(((
120 -No
121 -)))|(((
122 -When streamToFilePath is specified, this binding determines whether WebObjects should overwrite an existing file. Defaults to false.
123 -)))
124 -|(((
125 -finalFilePath
126 -)))|(((
127 -String
128 -)))|(((
129 -out
130 -)))|(((
131 -No
132 -)))|(((
133 -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).
134 -)))
45 +{{/code}}
135 135  
136 -= Examples =
47 +== WOD-style ==
137 137  
138 -== Java methods ==
49 +{{code}}
139 139  
140 -{{code/}}
141 141  
142 -== WOD-style ==
52 +{{/code}}
143 143  
144 -{{code/}}
145 -
146 146  == Inline bindings (WOOGNL) ==
147 147  
148 148  {{code}}
... ... @@ -160,9 +160,9 @@
160 160  
161 161  = Related documents =
162 162  
163 -[[ERXWOFileUpload>>url:http://wocommunity.org/documents/javadoc/wonder/latest/er/extensions/components/_private/ERXWOFileUpload.html||shape="rect"]]
164 - [[AjaxFileUpload>>url:http://wocommunity.org/documents/javadoc/wonder/latest/er/ajax/AjaxFileUpload.html||shape="rect"]]
165 - [[NSPathUtilities.lastPathComponent>>url:http://wocommunity.org/documents/javadoc/WebObjects/5.4.2/com/webobjects/foundation/NSPathUtilities.html#lastPathComponent(java.lang.String)||shape="rect"]]
166 - [[ERAttachment>>doc:documentation.ERAttachment Framework]]
167 - [[Database vs Filesystem>>doc:documentation.Home.Best Practices.Development-Database vs Filesystem.WebHome]]
168 - [[Localization and Internationalization>>doc:documentation.Development-Localization and Internationalization]]
71 +[[ERXWOFileUpload>>http://wocommunity.org/documents/javadoc/wonder/latest/er/extensions/components/_private/ERXWOFileUpload.html]]
72 +[[AjaxFileUpload>>http://wocommunity.org/documents/javadoc/wonder/latest/er/ajax/AjaxFileUpload.html]]
73 +[[NSPathUtilities.lastPathComponent>>http://wocommunity.org/documents/javadoc/WebObjects/5.4.2/com/webobjects/foundation/NSPathUtilities.html#lastPathComponent(java.lang.String)]]
74 +[[ERAttachment>>ERAttachment Framework]]
75 +[[Database vs Filesystem>>Development-Database vs Filesystem]]
76 +[[Localization and Internationalization>>Development-Localization and Internationalization]]