File upload limit

On my ColdFusion 8 web application I am allowing users to
upload files. I am using cffile upload.
In the form they can upload up to 15 files (with up to 60 mb
size) at once with each form submit. All uploads are to the Windows
web server that Cold Fusion is hosted on.
It is going very slow and was wondering if this is not a good
practice and I should only be uploading just one file at a time or
maybe at most 5 files at a time??

Well a simple solution would be to allow your users to view a
notice saying that the more and bigger files they upload the longer
it will take. At least it then gives them the heads up.
But I would change the amound for sure, 15 is a lot of
fields. How about, allowing your users to only upload ONE file...a
ZIP folder with files in it?
This way, it is one single http request, and although might
be big, will be quicker and cleaner than 15 seperate form fields.
Once uploaded, you could then extract the files using CFZIP,
perform some kind of validation on the file sizes and types etc
then process those that pass using CFFILE and reject those that
don't meet the criteria; giving a message to the user.
I haven't tried this myself, but it seems more logical.
Cheers,
Mikey.

Similar Messages

  • Files size limit for vimeo upload

    Hi,
    There is a warning sign that says ''publishing movies bigger than 5 GB may fail''. Why is that ? I have a vimeo pro account (I can dowload up to 20 GB per week. Does vimeo have file size limits for uploads ?

    hello, I did some research on this question and found this:
    "Vimeo does not have a maximum file size for uploads, however, there is a maximum of 500MB of uploading per week, making the maximum file size effectively 500MB. That's with a free account; if you pay to join Vimeo Plus the maximum weekly upload limit raises to 5GB"
    So, maybe you can try to convert your video to another format in small file size? Or maybe you can trim video to make it smaller.  If you want to try these suggested methods, this software can help you out: https://itunes.apple.com/us/app/video-mate/id592736614?ls=1&mt=12

  • OLM content management: is there an upload file size limit?

    Hello -
    I am wondering if anyone has encountered a limit on the size of a file uploaded as content for a learning object? I have one zip file that is about 225 MB and fails on the upload, after trying for some time, with this error:
    JSP Error:
    Request URI:/OA_HTML/OA.jsp
    Exception:
    java.lang.OutOfMemoryError: Java heap space
    I am successful uploading all other content objects, all of which are much smaller. I am using Oracle Learning Management 11.5.10.2. My workaround, successful, is to extract the zip file manually into the appropriate directory on the Learning Management content server.
    Steps to reproduce (standard):
    1. Create learning object
    2. Attempt to upload zip file
    Thank you for your help!

    Hi Dears,
    i'm facing the same issue on content server with IAS 10G
    would u please advise ?
    and please for the workaround to FTP the file to the respected directory i have done so but it didn't appear in OLM folder please elaborate.
    thanks
    Nabil

  • Large File Upload ~50mb Fails using Firefox/Safari. Upload Limit is 1gig set at Web App. IIS timeout set at 120 seconds.

    Strange issue.  User can upload the file using IE9, but cannot do the same using Safari, Chrome, or FireFox.  The library resides in a Site Collection that was migrated from a 2010 Site Collection.  The timeout on IIS is 120 seconds.Very strange
    indeed.
    Haven't been able to trace the Correlation ID at this point.

    try using rest api for this much file upload if you are using custom solution.
    try below links for reference:
    http://blogs.technet.com/b/praveenh/archive/2012/11/16/issues-with-uploading-large-documents-on-document-library-wss-3-0-amp-moss-2007.aspx
    https://angler.wordpress.com/2012/03/21/increase-the-sharepoint-2010-upload-file-size-limit/
    http://social.technet.microsoft.com/wiki/contents/articles/20299.sharepoint-2010-uploading-large-files-to-sharepoint.aspx
    http://stackoverflow.com/questions/21873475/sharepoint-2013-large-file-upload-1gb
    https://answers.uchicago.edu/page.php?id=24860
    http://sharepoint.stackexchange.com/questions/91767/multiple-file-upload-not-working
    Please mark it as answer if you find it useful happy sharepointing

  • File size limit for webdav upload

    Dear Experts,
    we set up what we thought to be a restriction of the file size allowed for upload. We did this in the portal via
    System administration --> system configuration --> Knowledge Management --> Protocols --> WebDav --> Max WebDAV request size: 15728640 bytes.
    We would have expected that to not allow us uploading any files larger than 15 MB. Turns out we were wrong and it does not work. Here is a http-trace of an upload of a 21 MB file.
    Note the content length in the outbound message is 21832627.
    ========= Outbound Message =========
    PUT /irj/go/km/docs/documents/LSO/WBT/Academy_test_area/upload/secondUpload/SCORM%5B1%5D.2004.3ED.DocSuite.zip/SCORM%5B1%5D.2004.3ED.DocSuite.zip HTTP/1.1
    Host: ****hostname****:443
    Connection: TE
    TE: trailers, deflate, gzip, compress
    User-Agent: UCI DAV Explorer/0.91 RPT-HTTPClient/0.3-3E
    Translate: f
    Cookie: j_authscheme=basicauthentication; saplb_*=(J2EE405983900)405983952; JSESSIONID=(J2EE405983900)ID1262004252DB00846306331792142983End
    Cookie2: $Version="1"
    Authorization: Basic NDkwNjIyNzE6TGVybnRlNzg=
    Accept-Encoding: deflate, gzip, x-gzip, compress, x-compress
    Content-type: application/zip
    Content-length: 21832627
    **** Lots of Content ****
    * 21 MB of bits and bytes
    **** / Lots of Content
    ========= Inbound Message =========
    HTTP/1.1 201 Created
    Date: Wed, 19 Aug 2009 15:39:07 GMT
    Server: SAP J2EE Engine/7.01
    Content-Type: text/html; charset=UTF-8
    Cache-Control: no-cache
    Vary: accept-encoding,accept-language,cookie,translate
    ETag: "1589137901012"
    Last-Modified: Wed, 19 Aug 2009 15:39:15 GMT
    Content-Length: 0
    Via: 1.1 ****hostname****:443
    Would anyone know any other way of preventing the upload of large files via a webDAV client?
    Thank you very much.
    Regards
    Michael

    Hi Michael,
    This cannot be possible in portal but you can upload the max size file through portal drive or webdev . Through portal drive you can upload 50mb or any format file size you can upload through portal but portal you cannot upload you can get the message of file uploading failure or connectivity issues like these messgae appears at every interval so go through the portal drive or webdev.
    But best option for uploading huge file size is Portal drive. This will helpful for you.
    Regards
    RS

  • Client to Server upload: File size limit

    Hi,
    I am utilising java sockets to set up 2 way communication between a client and server program.
    I have successfully transferred files from the client to the server by writing/using the code shown below.
    However I now wish to place a limit on the size of any file that a user can transfer
    to the server. I think a file size limit of 1 megabyte would be ideal. Does anyone know a straightforward
    way to implement this restriction (without having to perform major modification to the code below)?
    Thanks for your help.
    *****Extract from Client.java******
    if (control.equals("2"))
         control="STOR";
         System.out.print("Enter relevant file name to be sent to server:");
         String nameOfFile = current.readLine(); //Read in the name of the file to be sent, store in a
    addLog("File name to be sent to server: " +nameOfFile);
         if(checkExists(nameOfFile)) //Call the checkExists method to make sure the user is sending a
         infoOuputStream.writeUTF(control);
         infoOuputStream.writeUTF(nameOfFile); //write the file name out to the socket
         OutputStream out = projSocket.getOutputStream(); //open an output stream to send the data
         sendFile(nameOfFile,out);
         addLog("File has been sent to server " +nameOfFile );
         else
              System.out.println("Error: The file is invalid or does not exist");
              addLog(" The user has attempted to send a file that does not exist" +nameOfFile);
    private static void sendFile ( String file, OutputStream output ) {
    try {
              FileInputStream input = new FileInputStream ( file );
    int value = input.read();
    while ( value != -1 ) {
    output.write ( value );
    value = input.read();
    output.flush();
    catch ( Exception ex ) {
    *****Extract from Server.java******
    if (incoming.equals("STOR"))
              String filename = iStream.readUTF(); //read in the string object (filename)
              InputStream in = projSock.getInputStream();
              handleFile ( in, filename ); //read in the file itself
         addLog("File successfully sent to server: " +filename);  //Record the send event in the log file
              System.out.println("Send Operation Successful: " + filename);
    private static void handleFile ( InputStream input, String file ) {
    try {
              FileOutputStream output = new FileOutputStream ( file );
    int value = input.read();
    while ( value != -1 ) {
    output.write ( value );
    value = input.read();
    output.flush();
    catch ( Exception ex ) {

    Thanks for the advice. Have it working perfectly nowGlad it helped. You have no idea how refreshing it is that you didn't respond with, "Can you send me the code?" Nice to see there are still folk posting here who can figure out how to make things work with just a pointer or two...
    Grant

  • Calendar & File Upload Components - Threadinar6

    Hi All,
    This is the sixth in the "Threadinar" series , please see Threadinar5 at
    http://swforum.sun.com/jive/thread.jspa?threadID=99473 for details
    In this Threadinar we will focus on the
    "Calendar" and "File Upload" Components
    Let us begin our discussion with the Calendar Component.
    Calendar Component
    You can drag the Calendar component "calendar component icon" from the Palette's Basic category to a page open in the Visual Designer to create an entry field with an integrated calendar pop-up to help the user pick dates for the field.
    You can also drop the calendar on a container component, like a table cell or group box.
    After dragging the component to the Visual Designer, you can work with the following useful properties of the Calendar Component:-
    General
    * id. Type: String
    The name of the Calendar component in the page bean and the JSP file.
    Appearance
    * columns. Type: int
    The number of character columns used to render the component. The default value is 20.
    * dateFormatPattern. Type: String
    The format of the date to be entered by the user. It is not usually necessary to set this property because a pattern is chosen automatically based on the locale.
    If you prefer to specify a date format, click the ellipsis button (...) to the right of the property and select a predefined date format from the property editor's list. You can also add your own formats. If you add a format, the values you can enter are limited to some combination of yyyy for the year, MM for the month, and dd for the day separated by separator characters. Typical separator characters are / (slash), . (period), and - (dash). For example, the following date formats are acceptable:
    o MM/dd/yyyy
    o yyyy.MM.dd
    o MM-dd-yyyy
    * dateFormatPatternHelp. Type: text
    Text that appears below the date entry field and shows the format pattern that the date entry field accepts. If you have not set the dateFormatPattern property, the help text is chosen automatically for you. If you have set the dateFormatPattern property, you should bind the dateFormatPatternHelp property to a localized string that matches the setting for each locale you want to support.
    * label. Type: String
    A label that appears next to the text entry field, typically describing what the user is supposed to enter.
    o Note: The label property is not as flexible as the Label component. You can use the Label component if you want more control over the label's appearance, such as positioning of the label relative to the component.
    * labelLevel. Type: int
    A number that affects the appearance of the label. 1 (Strong) is larger and bold. 2 (Medium), the default, is smaller and bold. 3 (Weak) is smaller and normal (not bold). This property takes effect only if the label property is set.
    * style. Type: String
    Cascading Style Sheet rules (CSS level 2) to be applied to the component. For example:
    position: absolute; left: 288px; top: 312px
    You can enter values directly or click the ellipsis (...) button to use the Style Editor.
    o Note: This property overrides any settings in the theme or the project CSS file for this component. If a style specified in this property does not appear to take effect, it is because an area of the component is obscured by a child component that has different style settings.
    For a list of CSS2 style attributes, see the web page at
    http://www.w3.org/TR/REC-CSS2/propidx.html
    * styleClass. Type: String
    A space-separated list of CSS2 style classes to be applied when the component is rendered. The style classes must be defined in the project's style sheet or in the theme's CSS file. If you click the ellipsis button (...), you see a list of all styles you can add to this property. For information on adding CSS classes and rules to the project's cascading style sheet, see CSS Editor.
    o Note: See the note above under the style property description for an explanation of why a class added to this property might appear to have no effect on the component.
    o Note: If you add a CSS style class from the current theme to your project CSS file and you redefine the style class, the change affects all components that use this style class. However, you can add your own style classes to the project CSS file that redefine the default style classes, and then when you add them to this property, the changes affect only this instance of this component.
    For the defaulttheme.jar CSS style classes for this component, see Calendar Component CSS Classes.
    Data
    * maxDate. Type: java.util.Date
    The last date that the user can select. The default value is four years from the date set in the minDate property, for a total span of five years.
    * minDate. Type: java.util.Date
    The earliest date that the user can select. The default value is the value of the selectedDate property, which defaults to the current date if that property is not set.
    * required. Type: boolean
    If selected, the user must enter a value for the calendar before the page can be submitted. If you add a Message component to the page and link its for property to this component, an error message will be displayed if the user tries to submit the page without entering a value.
    * selectedDate. Type: Date
    A java.util.Date object representing the calendar date selected by the user. If you right-click the component and choose Bind to Data, you can bind this property to a data provider or object that can process the user entered value on the server.
    When the component displays initially, if this property is not set, its value defaults to the current date. If you provide values for minDate and maxDate, you can also provide a value for this property that initially displays a date in that range.
    * validator. Type: MethodBinding
    Indicates the JavaServer Faces validator that is called when the value is submitted. A validator ensures that the correct value is entered by a user. Choose a validator from the drop-down list. If you choose (null), no validator is called. If you choose a validator, also select the required property to ensure that the validator is used. For descriptions of JavaServer Faces validators, see the list of topics at List of Validators.
    o Note: If you define your own validate method, for example, by right-clicking the component and choosing Edit Event Handler > validate, any value you might have set in this property is overridden.
    File Upload Component
    You can drag the File Upload component "file upload component icon" from the Palette's Basic category to the Visual Designer to create an entry field and a browse button that opens a file chooser dialog on the local system, enabling the user either to select a file or to type a file name into the entry field. When the page is submitted, a copy of the file's contents is sent to the web application.
    The component is similar to an HTML <input type="file"> element.
    * Note: This component is neither supported by nor available in portlet projects due to security reasons.
    * Note: The size of the component in the Visual Designer might not match the size of the component when it is rendered in a web browser, making the component appear to line up correctly in the Visual Designer, but not when the page is rendered in the user's web browser. Also, the rendering of this component can differ depending on the web browser. Be sure to test the component in the web browsers that you expect your users to use. For example, if you add a width setting to the style property that is smaller than the setting in the columns property, Internet Explorer observes only the width setting, while the Mozilla browser ignores it and sets the width according to the number of characters in the columns property.
    The File upload component uses a filter, a com.sun.rave.web.ui.util.UploadFilter object that is configured for you in the web application's deployment descriptor. The UploadFilter uses the Apache commons fileupload package. You might need to change these settings in the following two cases:
    * The server holds the uploaded file in memory unless it exceeds 4096 bytes; otherwise, the server holds the file contents in a temporary file. You can change this threshold by modifying the sizeThreshold parameter for the UploadFilter filter entry in the web application's web.xml file.
    * By default, the File Upload component can handle files up to one megabyte in size. You can change the maximum file size by modifying the maxSize parameter for the UploadFilter filter entry in the application's web.xml file.
    o
    A negative value for the maxSize parameter indicates that there is no file size limit. Setting the parameter to a negative value is not recommended for security reasons. For example, if you allow unlimited file sizes, a malicious user could mount a denial of service attack on your site by using extremely large files
    * To change the settings for the UploadFilter object in the web.xml file:
    1. In the Files window, expand project-name > web > WEB-INF.
    2. Double-click the web.xml node to open the file in the XML editor.
    3. Click the Filters toolbar button.
    4. In the UploadFilter section under Initialization Parameters, you can change the values for the maxSize and sizeThreshold parameters.
    The contents of the uploaded file, together with some information about it, are stored in an instance of com.sun.rave.web.ui.model.UploadedFile. By using this object, you can get the content of the file as a String or write the contents to disk, as well as get properties such as the name and the size of the file. In the interest of conserving memory, the contents and file data are only available during the HTTP request in which the file was uploaded. To access the contents of the uploaded file, bind the uploadedFile property to a bean property of type com.sun.rave.web.ui.model.UploadedFile. Have the setter or an action method process the file.
    The UploadedFile interface has methods for getting the name and size of the file, determining the file's MIME type (such as text/plain or image/jpeg), getting the file's contents as bytes or as a String, and writing the contents to disk. To learn more, in the Java editor, right-click on UploadedFile in a declaration statement and choose Show JavaDoc from the pop-up menu.
    * To set the component's properties, select the component and edit its properties in the File Upload Properties Window.
    * Right-click the component and choose one of the following pop-up menu items:
    o Edit validate Event Handler. Opens the Java Editor with the cursor positioned in the component's validate method so you can insert code to validate the value of the component.
    o Set Initial Focus. Gives this component focus when the user opens the page.
    o Auto-submit on Change. Causes the form to be automatically submitted if the value of the component changes. Sets the component's JavaScript onclick property to common_timeoutSubmitForm(this.form, 'component-id');. At runtime, this code causes the form to be automatically submitted if the user changes the component value. Once the form is submitted, conversion and validation occur on the server and any value change listener methods execute, and then the page is redisplayed.
    A component configured to Auto-submit on Change can use virtual forms to limit the input fields that are processed when the form is submitted. If the auto-submit component is defined to submit a virtual form, only the participants in that virtual form will be processed when the auto-submit occurs.
    o Bind to Data. Bind the component's text property to an object or to a data provider. For more information, see Bind to Data Dialog Box.
    o Property Bindings. Bind any of the component's properties to an object or data provider, such as the uploadedFile property to a bean property of type com.sun.rave.web.ui.model.UploadedFile.
    o Configure Virtual Forms. Enables you to add the component to a virtual form.
    For more details on using the "File Upload Component" Please see this tutorial
    http://developers.sun.com/prodtech/javatools/jscreator/learning/tutorials/2/file_upload.html
    Please share your comments, experiences, additional information, questions, feedback, etc. on these components.
    ------------------------------------------------------------------------------- --------------------

    Of interest relating to file upload component to users : "Saving Uploaded Files Uploaded by the File Upload Component " Check the blog:
    http://blogs.sun.com/roller/page/divas

  • Problem using File upload in portlets

    hello there
    I'm trying to use file upload component in one of my portlets. I searched a lot about a working component to be used in portlets since the standard one that comes with JSC doesn't work in portlets. I managed to get commons file upload and tomahawk to run in my portlet, but when I choose a file and try to get selected file's details it throughs a NullPointerException reporting that the file object is null.
    so please can anyone guide me to a working portlet example, I tried to find one but I couldn't. if that's hard to find, what should I do ?
    thank you in advance

    I added file upload component in JSF from portlets in Sun Java Portal server.
    Take a look...
    portlet.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
    version="1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
    <portlet>
    <description>SFTB Anonymous Mail Portlet</description>
    <portlet-name>SFTBAnonymousMailPortlet</portlet-name>
    <display-name>SFTBAnonymousMailPortlet</display-name>
    <portlet-class>org.apache.portals.bridges.portletfilter.FilterPortlet</portlet-class>
    <init-param>
    <name>portlet-class</name>
    <value>com.sun.faces.portlet.FacesPortlet</value>
    </init-param>
    <!-- Filter for MyFaces Tomahawk extension. -->
    <init-param>
    <name>portlet-filters</name>
    <value>jp.sf.pal.tomahawk.filter.ExtensionsPortletFilter</value>
    </init-param>
    <init-param>
    <description>Portlet init page</description>
    <name>com.sun.faces.portlet.INIT_VIEW</name>
    <value>/jsp/index.jsp</value>
    </init-param>
    <supports>
    <mime-type>text/html</mime-type>
    <portlet-mode>VIEW</portlet-mode>
    <portlet-mode>EDIT</portlet-mode>
    <portlet-mode>HELP</portlet-mode>
    </supports>
    <portlet-info>
    <title>&#1054;&#1090;&#1087;&#1088;&#1072;&#1074;&#1082;&#1072; &#1087;&#1088;&#1077;&#1076;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1081;</title>
    <short-title>&#1054;&#1090;&#1087;&#1088;&#1072;&#1074;&#1082;&#1072; &#1087;&#1088;&#1077;&#1076;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1081;</short-title>
    </portlet-info>
    </portlet>
    </portlet-app>
    web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <display-name>SFTBAnonymousMailComment</display-name>
    <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
    </context-param>
    <context-param>
    <param-name>javax.faces.CONFIG_FILES</param-name>
    <param-value>/WEB-INF/faces-config.xml</param-value>
    </context-param>
    <!--
    Extensions filter from Apache MyFaces Tomahawk used for uploads files.
    -->
    <filter>
    <filter-name>ExtensionsFilter</filter-name>
    <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
    <init-param>
    <param-name>uploadMaxFileSize</param-name>
    <param-value>10m</param-value>
    <description>Set the size limit for uploaded files.
    Format: 10 - 10 bytes
    10k - 10 KB
    10m - 10 MB
    1g - 1 GB
    </description>
    </init-param>
    <init-param>
    <param-name>uploadThresholdSize</param-name>
    <param-value>100k</param-value>
    <description>Set the threshold size - files
    below this limit are stored in memory, files above
    this limit are stored on disk.
    Format: 10 - 10 bytes
    10k - 10 KB
    10m - 10 MB
    1g - 1 GB
    </description>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>ExtensionsFilter</filter-name>
    <servlet-name>FacesServlet</servlet-name>
    </filter-mapping>
    <servlet>
    <servlet-name>FacesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>FacesServlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    </web-app>
    Files in WEB-INF/lib
    commons-beanutils-1.7.0.jar
    commons-collections-3.2.jar
    commons-digester-1.8.jar
    commons-fileupload-1.2.1.jar
    commons-io-1.2.jar
    commons-logging-1.1.1.jar
    faces-response-filter-0.2.jar
    jsf-api-1.1_02.jar
    jsf-impl-1.1_02.jar
    jsf-portlet-1.1.5.jar
    jstl-1.1.0-D13.jar
    log4j-1.2.9.jar
    portals-bridges-portletfilter-1.0.jar
    standard-1.1.0-D13.jar
    tomahawk-1.1.6.jar
    tomahawk-bridge-0.9.1.jar
    Files tomahawk-bridge-0.9.1.jar, faces-response-filter-0.2.jar may be found there http://sourceforge.jp/projects/pal/
    In JSF beans I'm using org.apache.myfaces.custom.fileupload.UploadedFile
    Hope this helps.
    Bests,
    Alex Magdenko

  • Rename file extension during a file upload ??

    I need to rename the extension of a file at some point during the file upload. I am not sure where to do this at.
    The file needs to be renamed before it is written to the directory.
    Basically, the file will come in with a .txt or .doc type. Based on a users profile, I will change the type to a non-relavent number such as 1111.
    Here is my upload servlet. Can you tell me where to change the type so it will write the file with the new extension?
    Thanks.
    public class FileExport {
    //restrict upload files to 1 Meg
    private static final int DEFAULT_MAX_POST_SIZE = 1024 * 1024;
    private static final String NO_FILE = "unknown";
    private HttpServletRequest req;
    private File dir;
    private int maxSize;
    private Hashtable parameters = new Hashtable(); // name - Vector of values
    private Hashtable files = new Hashtable(); // name - UploadedFile
    public FileExport(HttpServletRequest request,
    String saveDirectory) throws IOException {
    this(request, saveDirectory, DEFAULT_MAX_POST_SIZE);
    // request the servlet request
    // saveDirectory = directory in which to save any uploaded files
    // maxPostSize = maximum size of the POST content
    public FileExport(HttpServletRequest request,
    String saveDirectory,
    int maxPostSize) throws IOException {
    // check values
    if (request == null)
    throw new IllegalArgumentException("request cannot be null");
    if (saveDirectory == null)
    throw new IllegalArgumentException("saveDirectory cannot be null");
    if (maxPostSize <= 0) {
    throw new IllegalArgumentException("maxPostSize must be positive");
    // Save the request, dir, and max size
    req = request;
    dir = new File(saveDirectory);
    maxSize = maxPostSize;
    // Check saveDirectory is truly a directory
    if (!dir.isDirectory())
    throw new IllegalArgumentException("Not a directory: " + saveDirectory);
    // Check saveDirectory is writable
    if (!dir.canWrite())
    throw new IllegalArgumentException("Not writable: " + saveDirectory);
    // Now parse the request saving data to "parameters" and "files";
    // write the file contents to the saveDirectory
    readRequest();
    public FileExport(ServletRequest request,
    String saveDirectory) throws IOException {
    this((HttpServletRequest)request, saveDirectory);
    public FileExport(ServletRequest request,
    String saveDirectory,
    int maxPostSize) throws IOException {
    this((HttpServletRequest)request, saveDirectory, maxPostSize);
    // Returns the names of all the parameters as an Enumeration of
    // Strings. It returns an empty Enumeration if there are no parameters.
    public Enumeration getParameterNames() {
    return parameters.keys();
    // Returns the names of all the uploaded files as an Enumeration of
    // Strings. It returns an empty Enumeration if there are no uploaded
    // files. Each file name is the name specified by the form, not by
    // the user.
    public Enumeration getFileNames() {
    return files.keys();
    // Returns the value of the named parameter as a String, or null if
    // the parameter was not sent or was sent without a value.
    public String getParameter(String name) {
    try {
    Vector values = (Vector)parameters.get(name);
    if (values == null || values.size() == 0) {
    return null;
    String value = (String)values.elementAt(values.size() - 1);
    return value;
    catch (Exception e) {
    return null;
    // Returns the values of the named parameter as a String array, or null if
    // the parameter was not sent.
    public String[] getParameterValues(String name) {
    try {
    Vector values = (Vector)parameters.get(name);
    if (values == null || values.size() == 0) {
    return null;
    String[] valuesArray = new String[values.size()];
    values.copyInto(valuesArray);
    return valuesArray;
    catch (Exception e) {
    return null;
    // Returns the filesystem name of the specified file, or null if the
    // file was not included in the upload. A filesystem name is the name
    // specified by the user. It is also the name under which the file is
    // actually saved.
    public String getFilesystemName(String name) {
    try {
    UploadedFile file = (UploadedFile)files.get(name);
    return file.getFilesystemName(); // may be null
    catch (Exception e) {
    return null;
    // Returns the content type of the specified file (as supplied by the
    //client browser), or null if the file was not included in the upload.
    public String getContentType(String name) {
    try {
    UploadedFile file = (UploadedFile)files.get(name);
    return file.getContentType(); // may be null
    catch (Exception e) {
    return null;
    // Returns a File object for the specified file saved on the server's
    // filesystem, or null if the file was not included in the upload.
    public File getFile(String name) {
    try {
    UploadedFile file = (UploadedFile)files.get(name);
    return file.getFile(); // may be null
    catch (Exception e) {
    return null;
    // method that actually parses the request.
    protected void readRequest() throws IOException {
    // Check the content length to prevent denial of service attacks
    int length = req.getContentLength();
    if (length > maxSize) {
    throw new IOException("Posted content length of " + length +
    " exceeds limit of " + maxSize);
    // Check the content type to make sure it's "multipart/form-data"
    // Access header two ways to work around WebSphere oddities
    String type = null;
    String type1 = req.getHeader("Content-Type");
    String type2 = req.getContentType();
    // If one value is null, choose the other value
    if (type1 == null && type2 != null) {
    type = type2;
    else if (type2 == null && type1 != null) {
    type = type1;
    // If neither value is null, choose the longer value
    else if (type1 != null && type2 != null) {
    type = (type1.length() > type2.length() ? type1 : type2);
    if (type == null ||
    !type.toLowerCase().startsWith("multipart/form-data")) {
    throw new IOException("Posted content type isn't multipart/form-data");
    // Get the boundary string; it's included in the content type.
    // Should look something like "------------------------12012133613061"
    String boundary = extractBoundary(type);
    if (boundary == null) {
    throw new IOException("Separation boundary was not specified");
    // Construct the special input stream we'll read from
    MultipartInputStreamHandler in =
    new MultipartInputStreamHandler(req.getInputStream(), length);
    // Read the first line, should be the first boundary
    String line = in.readLine();
    if (line == null) {
    throw new IOException("Corrupt form data: premature ending");
    // Verify that the line is the boundary
    if (!line.startsWith(boundary)) {
    throw new IOException("Corrupt form data: no leading boundary");
    // Now that we're just beyond the first boundary, loop over each part
    boolean done = false;
    while (!done) {
    done = readNextPart(in, boundary);
    // A utility method that reads an individual part. Dispatches to
    // readParameter() and readAndSaveFile() to do the actual work. A
    // subclass can override this method for a better optimized or
    // differently behaved implementation.
    protected boolean readNextPart(MultipartInputStreamHandler in,
    String boundary) throws IOException {
    // Read the first line, should look like this:
    // content-disposition: form-data; name="field1"; filename="file1.txt"
    String line = in.readLine();
    if (line == null) {
    // No parts left, we're done
    return true;
    else if (line.length() == 0) {
    // IE4 on Mac sends an empty line at the end; treat that as the end.
    // Thanks to Daniel Lemire and Henri Tourigny for this fix.
    return true;
    // Parse the content-disposition line
    String[] dispInfo = extractDispositionInfo(line);
    String disposition = dispInfo[0];
    String name = dispInfo[1];
    String filename = dispInfo[2];
    // Now onto the next line. This will either be empty
    // or contain a Content-Type and then an empty line.
    line = in.readLine();
    if (line == null) {
    // No parts left, we're done
    return true;
    // Get the content type, or null if none specified
    String contentType = extractContentType(line);
    if (contentType != null) {
    // Eat the empty line
    line = in.readLine();
    if (line == null || line.length() > 0) {  // line should be empty
    throw new
    IOException("Malformed line after content type: " + line);
    else {
    // Assume a default content type
    contentType = "application/octet-stream";
    // Now, finally, we read the content (end after reading the boundary)
    if (filename == null) {
    // This is a parameter, add it to the vector of values
    String value = readParameter(in, boundary);
    if (value.equals("")) {
    value = null; // treat empty strings like nulls
    Vector existingValues = (Vector)parameters.get(name);
    if (existingValues == null) {
    existingValues = new Vector();
    parameters.put(name, existingValues);
    existingValues.addElement(value);
    else {
    // This is a file
    readAndSaveFile(in, boundary, filename, contentType);
    if (filename.equals(NO_FILE)) {
    files.put(name, new UploadedFile(null, null, null));
    else {
    files.put(name,
    new UploadedFile(dir.toString(), filename, contentType));
    return false; // there's more to read
    // A utility method that reads a single part of the multipart request
    // that represents a parameter. A subclass can override this method
    // for a better optimized or differently behaved implementation.
    protected String readParameter(MultipartInputStreamHandler in,
    String boundary) throws IOException {
    StringBuffer sbuf = new StringBuffer();
    String line;
    while ((line = in.readLine()) != null) {
    if (line.startsWith(boundary)) break;
    sbuf.append(line + "\r\n"); // add the \r\n in case there are many lines
    if (sbuf.length() == 0) {
    return null; // nothing read
    sbuf.setLength(sbuf.length() - 2); // cut off the last line's \r\n
    return sbuf.toString(); // no URL decoding needed
    // A utility method that reads a single part of the multipart request
    // that represents a file, and saves the file to the given directory.
    // A subclass can override this method for a better optimized or
    // differently behaved implementation.
    protected void readAndSaveFile(MultipartInputStreamHandler in,
    String boundary,
    String filename,
    String contentType) throws IOException {
    OutputStream out = null;
    // A filename of NO_FILE means no file was sent, so just read to the
    // next boundary and ignore the empty contents
    if (filename.equals(NO_FILE)) {
    out = new ByteArrayOutputStream(); // write to nowhere
    // A MacBinary file goes through a decoder
    else if (contentType.equals("application/x-macbinary")){
    File f = new File(dir + File.separator + filename);
    out = new MacBinaryDecoderOutputStream(
    new BufferedOutputStream(
    new FileOutputStream(f), 8 * 1024));
    // A real file's contents are written to disk
    else {
    File f = new File(dir + File.separator + filename);
    out = new BufferedOutputStream(new FileOutputStream(f), 8 * 1024);
    byte[] bbuf = new byte[100 * 1024]; // 100K
    int result;
    String line;
    // ServletInputStream.readLine()
    // adds a \r\n to the end of the last line.
    // Since we want a byte-for-byte transfer, we have to cut those chars.
    boolean rnflag = false;
    while ((result = in.readLine(bbuf, 0, bbuf.length)) != -1) {
    // Check for boundary
    if (result > 2 && bbuf[0] == '-' && bbuf[1] == '-') { // quick pre-check
    line = new String(bbuf, 0, result, "ISO-8859-1");
    if (line.startsWith(boundary)) break;
    // Are we supposed to write \r\n for the last iteration?
    if (rnflag) {
    out.write('\r'); out.write('\n');
    rnflag = false;
    // Write the buffer, postpone any ending \r\n
    if (result >= 2 &&
    bbuf[result - 2] == '\r' &&
    bbuf[result - 1] == '\n') {
    out.write(bbuf, 0, result - 2); // skip the last 2 chars
    rnflag = true; // make a note to write them on the next iteration
    else {
    out.write(bbuf, 0, result);
    out.flush();
    out.close();
    // Extracts and returns the boundary token from a line.
    private String extractBoundary(String line) {
    // Use lastIndexOf() because IE 4.01 on Win98 has been known to send the
    // "boundary=" string multiple times. Thanks to David Wall for this fix.
    int index = line.lastIndexOf("boundary=");
    if (index == -1) {
    return null;
    String boundary = line.substring(index + 9); // 9 for "boundary="
    // The real boundary is always preceeded by an extra "--"
    boundary = "--" + boundary;
    return boundary;
    // Extracts and returns disposition info from a line, as a String array
    // with elements: disposition, name, filename. Throws an IOException
    // if the line is malformatted.
    private String[] extractDispositionInfo(String line) throws IOException {
    // Return the line's data as an array: disposition, name, filename
    String[] retval = new String[3];
    // Convert the line to a lowercase string without the ending \r\n
    // Keep the original line for error messages and for variable names.
    String origline = line;
    line = origline.toLowerCase();
    // Get the content disposition, should be "form-data"
    int start = line.indexOf("content-disposition: ");
    int end = line.indexOf(";");
    if (start == -1 || end == -1) {
    throw new IOException("Content disposition corrupt: " + origline);
    String disposition = line.substring(start + 21, end);
    if (!disposition.equals("form-data")) {
    throw new IOException("Invalid content disposition: " + disposition);
    // Get the field name
    start = line.indexOf("name=\"", end); // start at last semicolon
    end = line.indexOf("\"", start + 7); // skip name=\"
    if (start == -1 || end == -1) {
    throw new IOException("Content disposition corrupt: " + origline);
    String name = origline.substring(start + 6, end);
    // Get the filename, if given
    String filename = null;
    start = line.indexOf("filename=\"", end + 2); // start after name
    end = line.indexOf("\"", start + 10); // skip filename=\"
    if (start != -1 && end != -1) {                // note the !=
    filename = origline.substring(start + 10, end);
    // The filename may contain a full path. Cut to just the filename.
    int slash =
    Math.max(filename.lastIndexOf('/'), filename.lastIndexOf('\\'));
    if (slash > -1) {
    filename = filename.substring(slash + 1); // past last slash
    if (filename.equals("")) filename = NO_FILE; // sanity check
    // Return a String array: disposition, name, filename
    retval[0] = disposition;
    retval[1] = name;
    retval[2] = filename;
    return retval;
    // Extracts and returns the content type from a line, or null if the
    // line was empty. Throws an IOException if the line is malformatted.
    private String extractContentType(String line) throws IOException {
    String contentType = null;
    // Convert the line to a lowercase string
    String origline = line;
    line = origline.toLowerCase();
    // Get the content type, if any
    if (line.startsWith("content-type")) {
    int start = line.indexOf(" ");
    if (start == -1) {
    throw new IOException("Content type corrupt: " + origline);
    contentType = line.substring(start + 1);
    else if (line.length() != 0) {  // no content type, so should be empty
    throw new IOException("Malformed line after disposition: " + origline);
    return contentType;
    // A class to hold information about an uploaded file.
    class UploadedFile {
    private String dir;
    private String filename;
    private String type;
    UploadedFile(String dir, String filename, String type) {
    this.dir = dir;
    this.filename = filename;
    this.type = type;
    public String getContentType() {
    return type;
    public String getFilesystemName() {
    return filename;
    public File getFile() {
    if (dir == null || filename == null) {
    return null;
    else {
    return new File(dir + File.separator + filename);
    // A class to aid in reading multipart/form-data from a ServletInputStream.
    // It keeps track of how many bytes have been read and detects when the
    // Content-Length limit has been reached.
    class MultipartInputStreamHandler {
    ServletInputStream in;
    int totalExpected;
    int totalRead = 0;
    byte[] buf = new byte[8 * 1024];
    public MultipartInputStreamHandler(ServletInputStream in,
    int totalExpected) {
    this.in = in;
    this.totalExpected = totalExpected;
    // Reads the next line of input. Returns null to indicate the end
    // of stream.
    public String readLine() throws IOException {
    StringBuffer sbuf = new StringBuffer();
    int result;
    String line;
    do {
    result = this.readLine(buf, 0, buf.length); // this.readLine() does +=
    if (result != -1) {
    sbuf.append(new String(buf, 0, result, "ISO-8859-1"));
    } while (result == buf.length); // loop only if the buffer was filled
    if (sbuf.length() == 0) {
    return null; // nothing read, must be at the end of stream
    sbuf.setLength(sbuf.length() - 2); // cut off the trailing \r\n
    return sbuf.toString();
    // A pass-through to ServletInputStream.readLine() that keeps track
    // of how many bytes have been read and stops reading when the
    // Content-Length limit has been reached.
    public int readLine(byte b[], int off, int len) throws IOException {
    if (totalRead >= totalExpected) {
    return -1;
    else {
    if (len > (totalExpected - totalRead)) {
    len = totalExpected - totalRead; // keep from reading off end
    int result = in.readLine(b, off, len);
    if (result > 0) {
    totalRead += result;
    return result;
    // Class to filters MacBinary files to normal files on the fly
    // Optimized for speed more than readability
    class MacBinaryDecoderOutputStream extends FilterOutputStream {
    int bytesFiltered = 0;
    int dataForkLength = 0;
    public MacBinaryDecoderOutputStream(OutputStream out) {
    super(out);
    public void write(int b) throws IOException {
    // Bytes 83 through 86 are a long representing the data fork length
    // Check <= 86 first to short circuit early in the common case
    if (bytesFiltered <= 86 && bytesFiltered >= 83) {
    int leftShift = (86 - bytesFiltered) * 8;
    dataForkLength = dataForkLength | (b & 0xff) << leftShift;
    // Bytes 128 up to (128 + dataForkLength - 1) are the data fork
    else if (bytesFiltered < (128 + dataForkLength) && bytesFiltered >= 128) {
    out.write(b);
    bytesFiltered++;
    public void write(byte b[]) throws IOException {
    write(b, 0, b.length);
    public void write(byte b[], int off, int len) throws IOException {
    // If the write is for content past the end of the data fork, ignore
    if (bytesFiltered >= (128 + dataForkLength)) {
    bytesFiltered += len;
    // If the write is entirely within the data fork, write it directly
    else if (bytesFiltered >= 128 &&
    (bytesFiltered + len) <= (128 + dataForkLength)) {
    out.write(b, off, len);
    bytesFiltered += len;
    // Otherwise, do the write a byte at a time to get the logic above
    else {
    for (int i = 0 ; i < len ; i++) {
    write(b[off + i]);

    I am also need to rename a file and extension while uploadinf the file to the server. The oreilly example seems only save as the same file name and ext. I wonder if you have the ability chANGE OIT OR NOT. pLEASE LET ME KNOW
    thanks
    kansen

  • HT4863 How can I increase the file size limit for outgoing mail. I need to send a file that is 50MB?

    How can I increase the file size limit for outgoing mail. I need to send a file that is 50MB?

    You can't change it, and I suspect few email providers would allow a file that big.  Consider uploading it to a service like Dropbox, then email the link allowing the recipient to download it.

  • Possible to show file upload progress for web form submission?

    I just made a simple form as a test. There are 3 files being submitted here via a "web form".
    Files being uploaded in this case are of these sizes:
    110MB
    9MB
    24MB
    I'm testing functionality that will let a print shop's clients upload their files. For larger files they'll use FTP but this "order form" does a lot of business for them so we're trying to replicate in BC.
    My problem is that I am wondering if there is a way to show the "upload progress" as a total %. Such as a visual status bar, etc.
    As of now the only way it's showing is in the default browser status bar (chrome in this case):
    http://cl.ly/image/1d3U0S1h2521
    I read somewhere that the limit is 150MB for an upload. Wondering if that means 150MB TOTAL as in 3 files combined in my case. Or If I chose to allow 3 files to be attached would it allow for 450MB?
    Also, if you do a user submitted web app instead and allow people to attach files that way, does the same file limit apply?
    My second issue is that the upload speed seems to be SLOW. I know it's not my connection because on my non BC site as well as another with the same form, the files upload fairly fast. But on BC it just crawls and on a few tests I get this:
    http://cl.ly/image/2T2q160M1R1n
    Any help or suggestions with the file upload progress as well as file upload speed would be appreciated.
    Thanks!

    So if i have 3 files to be uploaded, the max allowed is 750MB correct? (just wondering if when uploading its 250mb total or per file).
    Guess i'll do something fake to make it appear its working with a loading graphic or something.
    My web browser (chrome in this case) shows the % uploaded. I wonder if all web browsers do the same. I havent tested yet.
    If only there were a way to have javascript or something grab that same #% from the web browser itself and just format it to appear where I want on the form along with the % uploading.
    Anyone know if that's possible?
    Here's where Chrome for mac shows it:
    http://cl.ly/image/1c3i3x25262j
    If I could grab that (uploading 19%) from the browser and format it into css/html i'd be gold.
    Then find if similar browsers do the same and write some js for each browser specifically to grab it.
    In a perfect world at least....

  • File upload fails

    File upload fails when the file is larger than about 50kb. The upload returns a blank page when it fails. I have searched the world over and cannot find an answer to this problem. Does anyone have any suggestion of what to do?
    Thank you,
    Chris

    What mechanism are you using to handle uploaded files? Some libraries place a configurable limit on the size of the file.

  • File Upload PJC questions

    File Upload PJC
    I have installed the File Upload PJC demo & got it working.
    We are using Forms 6i patch 8 with servlet configuration, iAS 1.0.2.2.1 on Win 2000, Oracle 8.173
    We want to upload/download files to the server & save them as BFILES in the database. I think I am on the right track but have some questions:
    What do I have to change in the PJC to increase the memory so I can upload a file > 4 MB? We will be uploading some large files. I'd also like to ability to select multiple files to upload. I don't know much about Java programming but will learn if this is the best way to accomplish this.
    I want to upgrade to Forms patch 12. I understand that it uses Jinitiator 1.3 & that it will popup a dialog when it sees a new signed Jar file & will automatically import the certificate if the user decides to trust it - but I read on the Technet forum there is a bug 2483719 - does this work with patch 12?
    We also want to use the Native JVM for IE (when it will work with XP - is this patch 13?). What do we have to change if we create a signed CAB file?
    We also need the reverse to download a file to the client - WITHOUT using web.show_document - since this does not always prompt you with a save dialog box & tries to open the file in the browser.
    Any ideas will be helpful - thanks.
    [email protected]

    Laura,
    these are many questions in one post and I try to answer it as good as I can
    We want to upload/download files to the server & save them as BFILES in the database. I think I am on the right track but have some questions:
    What do I have to change in the PJC to increase the memory so I can upload a file > 4 MB? We will be uploading some large files.
    As far as I know there is no restriction to the size of the file uploaded to the server. There exist a recommendation of to which size this bean has been tested. Due to the implementation of the Bean there are defined chunk sizes for the data passed, but this does not limit the size of a downloaded file.
    I'd also like to ability to select multiple files to upload. I don't know much about Java programming but will learn if this is the best way to accomplish this.
    Actually you will have to change the code then. First you need to set a porperty on the file dialog allowing the selection of multiple files. Next you will have to handle multiple files in the bean code. Yes, without Java you will not get there.
    want to upgrade to Forms patch 12. I understand that it uses Jinitiator 1.3 & that it will popup a dialog when it sees a new signed Jar file & will automatically import the
    certificate if the user decides to trust it - but I read on the Technet forum there is a bug 2483719 - does this work with patch 12?
    The problem is that you use a different (custom) signature for the upload bean, after modifying it, that requires the user to first grant it permissions. The bug means that this currently cannot be handled with Jinitiator 1.3.x. The work around is explained in a Whitepaper on OTN about signing Java Bean in Forms (Forms9i collateral section). There is no dependency to teh Forms patch you use, but to Jinitiator. So yes, teh work around will work there.
    We also want to use the Native JVM for IE (when it will work with XP - is this patch 13?).
    Possibly. That's the target patch.
    What do we have to change if we create a signed CAB file?
    You'll have to use the Microsoft SDK and refer to their documentation on how to create and use signed cab files. Shoudl be no big difference though.
    We also need the reverse to download a file to the client - WITHOUT using web.show_document - since this does not always prompt you with a save dialog box & tries to
    open the file in the browser.
    This is a problems with files that the Browser has a MIME type map for. If you download a file with the .gif extension, then this is a known MIME type configured in the HTTP Server. Therefore the Browser recognizes that the downloaded stream is a gif file and tries to render it. You can work around it by making sure that the downloaded file extension is not knwon by the HTTP server (Mime type application/word).
    Frank

  • How to upload multiple files in Webdynpro using File upload Screen Element

    Hi Experts,
          Can anybody tell me how to upload multiple files/pdfs in webdynpro using file upload screen element, and also please tell me what is the maximum storage limit of RAWSTRING data type,Advance Thanks.
    Regards,
    Sandesh

    Hi Sandesh,
    this is simply not supported, not in WebDynpro nor in standard HTML.
    A workaround is to upload a ZIP with all files and on server side unpack the ZIP and operate on the single files.
    I hope it will  help u..
    ----------------------OR-------------------------
    As you know using File upload UI element we can upload only one file at a time. There may be a scenario where user may want to upload any no of files at a time which is not determined at design time. This can be acheived using the ACF UpDownload UI element which requires a security whiltelist to be created
    http://scn.sap.com/docs/DOC-2270
    ----------------------OR-------------------------
    You can use Table UI element.
    Regards,
    Deepak Singh

  • File upload no error no file - my solution

    In case someone out there struggles with the no error no file problem with file upload ASP/VB, after days of searching for a solution I finally found out it was an ASP upload max size problem.
    Take a look at this post at the Interakt forum, right at the end of the post is the solution to the max size limit in ASP
    http://www.interaktonline.com/Products/Dreamweaver-Extensions/MXFileUpload/Product-Forum/D etails/62313/File+upload+size.html
    Hope it helps!
    Cecilia

    Thanks Even i found out later this was the culprit.

Maybe you are looking for

  • How many macs can i put logic on ??

    how many macs can i put logic on ?? and can i extend the serial ??

  • Getting error message, need help

    Hi there, at the moment I have the following query: select cust_no, cust_address, cust_phoneno from customer natural join (select cust_no from businesscust minus select cust_no from rental); This query outputs perfectly fine, with no errors. However,

  • How to View Archived Data

    Dear all,         Can anyone pls tell me how to view the Archived data like same what we see in data target.      I have used ODS as data target ,after archiving i want to see the same data format what we see on ODS Active data.       Pls tell me how

  • Soft return in tagged text file

    Hi, anyone has example of using a End of line (soft return)  in tagged text file? i tried using <0x000A> but it does not work. Advice needed. Tkz

  • Mimic Photoshop's Bevel & Emboss layer style in Illustrator - how?

    Having searched for topics akin to my question, I have only really found tips on how to achieve a bevel and emboss on type. Here's what I'm trying to create... all using CS4... I have an artwork, all in Illustrator so far. It has background images of