Hi,
On 2 Sep 2004, at 07:24, Derek Hohls wrote:
In the "Upload File" sample, only text is handled and the code looks like:
function handleUpload(form) { var buf = new java.lang.StringBuffer(); var uploadWidget = form.lookupWidget("upload"); if (uploadWidget.getValue() != null) { var stream = uploadWidget.getValue().getInputStream(); var reader = new java.io.BufferedReader(new java.io.InputStreamReader(stream)); var line; while ((line=reader.readLine())!=null) buf.append(line).append("\n"); reader.close(); } return buf.toString(); }
It seems it should be possible to upgrade this to write out binary...??? Specifically, I want users to be able to upload standard image files - JPEG, GIF and PNG (and maybe BMP).
Here's one way to handle this:
// save the uploaded Image, retrieved from CForms
// form is the cforms form object
// id is the name or unique id of the object to save
// repository is a directory on the server
function saveUploadCForms(form, id, repository) {
try {
var uploadWidget = form.lookupWidget("upload");
if (uploadWidget.getValue() != null) {
var dest = resolve(repository + id + image_suffix);
var inputStream = uploadWidget.getValue().getInputStream();
var outputStream = dest.getOutputStream();
SourceUtil.copy(inputStream,outputStream);
cocoon.log.info("saved image: " + repository + id +
image_suffix);
}
} catch (e) {
cocoon.log.error(e);
return false;
}
return true;
}/**
* Utility function - resolve a URI to a Source
*
*/
function resolve(uri) {
try {
var resolver = cocoon.getComponent(SourceResolver.ROLE);
return resolver.resolveURI(uri);
} catch (error) {
cocoon.log.error("Unable to resolve source", error);
throw (error);
} finally {
cocoon.releaseComponent(resolver);
}
}The ideal solution would only allow these files types, but this is less critical than simply being able to get binary uploaded in the first place.
The biggest problem I've found doing this sort of thing is that the browsers all have different ideas of how to set the mime-types of the uploaded files, so you end up parsing the suffix to determine the type of file.
Any help appreciated... if the solution works, maybe I can post it to the Wiki for future reference.
It'll probably be faster than waiting for me to update the documentation and CForms samples ;-)
Andrew.
-- Andrew Savory, Managing Director, Luminas Limited Tel: +44 (0)870 741 6658 Fax: +44 (0)700 598 1135 Web: http://www.luminas.co.uk/ Orixo alliance: http://www.orixo.com/
smime.p7s
Description: S/MIME cryptographic signature
