That worked in Tap 3 but the setter has been removed in 4 (unless something changed very recently).
Ben -----Original Message----- From: Patrick Casey [mailto:[EMAIL PROTECTED] Sent: Tuesday, December 13, 2005 12:43 PM To: 'Tapestry users' Subject: RE: Client-side validated uploads Are you sure it's hard coded? Isn't the max upload size set in the extension point? <extension name="org.apache.tapestry.multipart-decoder" class="org.apache.tapestry.multipart.DefaultMultipartDecoder"> <configure property-name="maxSize" type="double" value="100000000"/> <!-- where the value is the maximum size you want to allow --> </extension> --- Pat > -----Original Message----- > From: Ben Dotte [mailto:[EMAIL PROTECTED] > Sent: Tuesday, December 13, 2005 10:32 AM > To: Tapestry users > Subject: RE: Client-side validated uploads > > Actually I believe file uploads have a hard-coded limit of 10mb right > now so I doubt that would be a problem (I've seen this limit hit, you > get a big ugly error message). See > http://issues.apache.org/jira/browse/TAPESTRY-764 > > To get rid of the nasty error message when this limit is hit, I believe > its not hard to validate the filesize to be below the 10mb limit.. can't > remember the details off the top of my head. You can also override > MultipartDecoderImpl and make a public setter on maxSize if 10mb is too > small. > > Ben > > -----Original Message----- > From: Daniel M Garland [mailto:[EMAIL PROTECTED] > Sent: Tuesday, December 13, 2005 11:07 AM > To: Tapestry users > Subject: Re: Client-side validated uploads > > Hi Ben, all > > This is also close to what I had come up with. Actually, I had to avoid > the use of ImageIO because we're deploying on Mac OSX and their ImageIO > is buggy im sure... > > Anyway, this server-side solution has the following problems: > 1) If you try to upload a 1GB file, you arn't stopping anybody > 2) You're reading all that data into memory, again if you upload the > huge file then you're going to lead to issues > > In my case, we're hoping that some non-I.T. people will be using the app > > and I can garantee they'll try to upload a billboard-sized TIFF. Hence > the need to validate client-side. > > It would be nice if I could set the value field on a file type (which is > > what is allowed in the 4.01 spec) but it is not supported in most > browsers. > > Do I have to actually implement my own uploading code? Ouch :( > > Ben Dotte wrote: > > I wrote a validator for this but I'm not totally sure this doesn't end > > up uploading the whole file anyway.. doesn't seem like it though. > > > > public void validate(IFormComponent field, ValidationMessages > messages, > > Object object) throws ValidatorException > > { > > IUploadFile imageFile = (IUploadFile)object; > > InputStream fis = imageFile.getStream(); > > ImageInputStream iis = null; > > > > try > > { > > iis = ImageIO.createImageInputStream(fis); > > Iterator imageReaders = ImageIO.getImageReaders(iis); > > if (!imageReaders.hasNext()) > > { > > // There are no image readers for this file > > fis.close(); > > throw new ValidatorException("Invalid image > > file."); > > } > > ImageReader firstReader = > > (ImageReader)imageReaders.next(); > > String imageFormat = > > firstReader.getFormatName().toLowerCase(); > > if (!imageFormat.equals("jpeg") && > > !imageFormat.equals("jpg") && > > !imageFormat.equals("gif") && > > !imageFormat.equals("png")) > > { > > // This is a valid image but we only accept > > jpeg, jpg, gif, or png > > fis.close(); > > throw new ValidatorException("The image format > > must be JPG, GIF, or PNG."); > > } > > BufferedImage image = ImageIO.read(iis); > > if (image.getWidth() > maxWidth || image.getHeight() > > > maxHeight) > > { > > // This image is too big > > fis.close(); > > throw new ValidatorException("The image exceeds > > the maximum width/height."); > > } > > fis.close(); > > } > > catch (IOException ioe) > > { > > // There was some other problem uploading the image > > throw new ValidatorException("Invalid image file."); > > } > > finally > > { > > if (iis != null) { > > try { iis.close(); } catch (IOException ioe) {} > > } > > if (fis != null) { > > try { fis.close(); } catch (IOException ioe) {} > > } > > } > > } > > > > HTH > > > > Ben > > > > -----Original Message----- > > From: Daniel M Garland [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, December 13, 2005 10:01 AM > > To: [email protected] > > Subject: Client-side validated uploads > > > > Hi all, > > > > I'm trying to figure out how to get around a brick wall: > > > > I want to validate an image file based upon its dimensions and > filesize > > before allowing the file to be written up to the server. I thought > about > > > > achieving this using a signed applet to read the file, and then pass > an > > acceptable filename to an Upload component. However, the value field > > will not be supported in most browsers, so is there any other way I > can > > use the Uploading features of Tapestry by somehow extending Upload? > > > > If not, where is the code that does this? I hear something about the > > commons project at apache but currently jakarta.apache.org/commons/ > > appears to be down. > > > > Thanks for your help in advance. > > -- > Dan Garland > ------------------------ > [EMAIL PROTECTED] > icq: 120963437 > aim: dmgarland1767 > > > ______________________________________________________________________ > This email has been scanned by the MessageLabs Email Security System. > For more information please visit http://www.messagelabs.com/email > ______________________________________________________________________ > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
