Storing uploaded files

I want to upload files from the client side in my application. I use IBM WebSphere Application Server 6.0. I want to know which would be the best location to store the uploaded files. If I want try use a location outside the server installation folder i get an error. I do not want to store files inside the WebSphere installation folder due to space constraints. Also I don't want to hard code the path as this also gives me portability problems. Please help me.
Thanks in advance.

See you have a lot of constraints.
One you want to store the files locally in hard disk. What I mean is you are not interested to store it in Database.
Secondly you dont wantr to hardcode the path.
What I can recommend is a property File Key can hold the path to the File Directory location. This can be loaded static - ly, when the Application loads and then the files can be saved outside the Web Sphere Installation folder whereever you have space.
This property file can be loosely coupled with the EAR / WAR file to facilitate modifications.
Things to consider when you are storing files locally outside application server path:
1. File of same name can be uploaded by different users. You need to take care of NOT overriding the files
2. If you need to display the files on demand to the User again, you need to have a servlet to read the file back and paint the content.
Thanks and regards,
Pazhanikanthan. P

Similar Messages

  • Uploaded Files stored in Oracle 10G database or in Unix File system

    Hey All,
    I am trying to understand best practices on storing uploaded files. Should you store within the database itself (this is the current method we are using by leveraging BLOB storage) or use a BFILE locator to use the files system storage (we have our DB's on UNIX) . . .or is there another method I should be entertaining? I have read arguments on both sides of this question. I wanted to see what answers forum readers could provide!! I understand there are quite a few factors but the situation I am in is as follows:
    1) Storing text and pdf documents.
    2) File sizes range from a few Kb to up to 15MB in size
    3) uploaded files can be deleted and updated / replaced quite frequently
    Right now we have an Oracle stored procedure that is uploading the files binary data into a BLOB column on our table. We have no real "performance" problems with this method but are entertaining the idea of using the UNIX file system for storage instead of the database.
    Thanks for the insight!!
    Anthony Roeder

    Anthony,
    First word you must learn here in this forum is RESPECT.
    If you require any further explanation, just say so.
    BLOB compared with BFILE
    Security:
    BFILEs are inherently insecure, as insecure as your operating system (OS).
    Features:
    BFILEs are not writable from typical database APIs whereas BLOBs are.
    One of the most important features is that BLOBs can participate in transactions and are recoverable. Not so for BFILEs.
    Performance:
    Roughly the same.
    Upping the size of your buffer cache can make a BIG improvement in BLOB performance.
    BLOBs can be configured to exist in Oracle's cache which should make repeated/multiple reads faster.
    Piece wise/non-sequential access of a BLOB is known to be faster than a that of a BFILE.
    Manageability:
    Only the BFILE locator is stored in an Oracle BACKUP. One needs to do a separate backup to save the OS file that the BFILE locator points to. The BLOB data is backed up along with the rest of the database data.
    Storage:
    The amount of table space required to store file data in a BLOB will be larger than that of the file itself due to LOB index which is the reason for better BLOB performance for piece wise random access of the BLOB value.

  • Storing the Uploaded Files

    Hi Every One,
    Storing the Uploaded File at database level (storing in Our Custom table) is More flexible/secure/Better one or storing at O S File system?
    At a time, what is the maximum file size that we can Upload in Apex?
    Regards
    N K

    Storing the Uploaded File at database level (storing in Our Custom table) is More flexible/secure/Better one or storing at O S File system?AndyPol's quotations from Tom Kyte were well made. However, our "best practice" is to store images, css, etc. outisde the database for storage reasons (I'm not saying this is best for everybody but rather that's what our experts like). I personally don't get access to the server on some of my projects though and find it is easier to load images and other files into Apex so I can access them without having to go through others to move files around.
    At a time, what is the maximum file size that we can Upload in Apex?Dunno. Check the documentation?

  • Storing Uploaded Audio Files in Your Database

    I have been using the cffile tag to upload files into a
    directory on the server and then writing the details of that file
    into a database, but I would like to now instead of uploading and
    writing the file to a directory, I would like to write that file
    into a field of a database table and then call it out later to
    listen to it or view it.
    Does anyone have any experience with writing a file into a
    database along with it's file details and then code to read it out
    and display the file details and view or listen to the file?
    I'm guessing that I would need a field in the database table
    that is a byte array, data type "image" to hold the file and then
    the other fields would be "type" "varchar" to hold the details of
    the file.
    MySQL or SQL Server are my choices of databases.
    Thank you!
    Tom

    You should have a blob type column (In oracle) to save the
    content ..
    First upload the file to webserver
    <cffile action="upload"
    filefield="form.FileName"
    destination="C:\temp\"
    nameconflict="makeunique" >
    Convert the same to binary
    <cffile
    action = "readbinary"
    file = "C:\temp\#cffile.serverFile#"
    variable="file_blob">
    insert statement
    insert into files (FILE_ID,file_content)
    values (7,
    <cfqueryparam
    value="#file_blob#"
    cfsqltype="cf_sql_blob">
    delete the file from the server
    <cffile
    action="delete"
    file="C:\temp\#cffile.serverFile#">

  • How to SCAN uploaded files for VIRUS in APEX

    part 1:
    Goal:
    Do a virus scan of the uploaded file from APEX application prior to storing the file in custom tables.
    The process:
    Followed the document from www.developer.com:
    Implementing an Anti-Virus File Scan in JEE Applications
    By Vlad Kofman
    Go to page: 1 2 3 Next
    This article will discuss one of the ways to implement antivirus file scanning in Java, particular in the JEE applications. Viruses, Trojan Horses, and different malware and spyware are a real problem for current computer environments, and especially for the Windows operating system. If you are designing any application in Java that has a requirement to be able to upload external files, you have a potential security risk. By uploading, I mean any way to get the external file inside of the corporate firewall be it via HTTP protocol or any other means. It is quite common to have this type of requirement in an enterprise application and with Java being one of the most popular web development platforms, it is unfortunate that this type of gaping security risk is quite often overlooked.
    Java's Development Kit (JDK) does not have any means to do the antivirus scan right out of the box. This is primarily because Java is a programming language, and does not have any virus scanning packages. Furthermore, anti-virus software is not Sun's area of expertise or business model. Developing this type of software (or Java package), and more importantly maintaining it, would be a huge task for Sun. Mainly because viruses are constantly evolving and keeping virus definitions up-to-date is a daunting task. Large companies such as McAffee, Symantec, or Zone Labs develop virus detecting and combating products and spend a lot of resources to maintain them.
    Application Environment
    To implement a virus file scan in Java, a third-party package needs to be used. For the purposes of this article, I will use Symantec Scan Engine (SSE) package, which comes with Java APIs. This package is an application that serves as a TCP/IP server and has a programming interface and enables Java applications to incorporate support for content scanning technologies. For this article, I used Symantec Scan Engine 5.1, which is available as a Unix or Windows install.
    If you are using an anti-virus package from the different vendor, you will need to investigate what kind of APIs are available; however, the general approach should be similar. Also, note that my implementation can be used with JEE technology and any modern MVC framework such as Struts or Spring.
    The architecture is as follows: A server machine needs to have SSE running at all times. This can be the same machine that hosts your Application Server, but in an enterprise environment this should be a different machine. The Default Port needs to be open through the firewall to allow communication with the scan engine. All JEE applications that need to do file scanning can talk to the SSE server machine through a default port. Also, multiple applications running on different application servers can re-use the same scanning server. For more information, you should refer to the Symantec Scan Engine (SSE) Installation Guide, available on the Symantec web site.
    When an external file that needs to be scanned is sent to the SSE via its programming interface (Java APIs using the default port), before any other operation on the file is performed, the SSE returns a result code. For instance, a file is uploaded by an external user into the web email type application as an attachment; then, the SSE API is invoked by the application and the return code of pass or fail determines the outcome of the upload and whether that email can actually be sent. If you have an account on Yahoo mail, you probably have seen that Yahoo is using Norton Antivirus to scan all attachments, although no Java.
    Click here for a larger image.
    Figure 1: Screen shot from Yahoo
    For details on the Scan Engine Server Installationm please see the Symantec Scan Engine (SSE) Implementation Guide from Symantec.
    Here are some key things to remember about SSE:
    •     Java 2 SE Runtime (JRE) 5.0 Update 6.0 or later must be installed on the server before the SSE installation is done.
    •     After installation, verify that the Symantec Scan Engine daemon is running. At the Unix command prompt (if it's a Unix install), type the following command:
    ps –ea | grep sym.
    A list of processes similar to the following should appear:
    o     5358 ? 0:00 symscan
    o     5359 ? 0:00 symscan
    If nothing is displayed the SSE process did not start.
    If the SSE process did not start, type the following command to restart SSE:
    /etc/init.d/symscan restart
    •     Keeping the virus definition up to date is the most important task and if new updates are not installed, the whole scan becomes ineffective. Symantec automatically downloads the most current file definitions through LiveUpdate. Please make sure that firewall rules are in place to allow the host server to connect to the Symantec update service.
    Project Setup
    For the purposes of this article, I included a wrapper for the Symantec SSE APIs, av.jar, which has Symantec Java APIs and serves as a client to the SSE server and takes care of all communications with the server. Please refer to the download source section. The av.jar should be included in the Java CLASSPATH to work with the SSE. This jar contains a class called AVClient that takes care of actually sending the files to SSE as byte arrays and returning the result.
    In my project setting, I added three variables to be accessed via the System.getProperty mechanism. For example:
    AV_SERVER_HOST=192.168.1.150
    AV_SERVER_PORT=1344
    AV_SERVER_MODE=SCAN
    The AV_SERVER_HOST is the host name or IP of the machine where Scan Engine is installed.
    The AV_SERVER_PORT is the port where Scan Engine listens for incoming files.
    The AV_SERVER_MODE is the scan mode which can be:
    •     NOSCAN: No scanning will be done (any keyword that does not start with "SCAN" will result in ignoring the call to the Scan Engine and no files will be transferred for scanning).
    •     SCAN: Files or the byte stream will be scanned, but the scan engine will not try to repair infections.
    •     SCANREPAIR: Files will be scanned, the scan engine will try to repair infections, but nothing else will be done.
    •     SCANREPAIRDELETE: Files will be scanned, the scan engine will try to repair infections, and irreparable files will be deleted.
    Note: For the file stream (byte array) scanning, the only meaning full values are "SCAN" and "NOSCAN".
    Using the SSE Scanning Java APIs
    In any class where scan is required, call the scanning API provided in the AVClient object located in the av.jar. The AVClient object will establish connection to the Scan Engine server and has the following APIs:
    Figure 2: The significant APIs for the communication with to the Scan Engine Server.
    If scanning a file on the file system, in SCAN only mode, use the call that accepts filename only.
    If scanning a file on the file system, with SCANREPAIR or SCANREPAIRDELETE, use the call that accepts input and output file names.
    If scanning an in-memory file (byte array), use the call accepting byte array.
    For example:
    import com.av.*;
    Initialize setup parameters:
    static String avMode =
    (System.getProperty("AV_SERVER_MODE") != null)
    ? (String) System.getProperty("AV_SERVER_MODE") : "NOSCAN";
    static boolean scan = avMode.startsWith("SCAN");
    static String avServer =
    (String) System.getProperty("AV_SERVER_HOST");
    static int avPort =
    Integer.parseInt( (String) System.getProperty("AV_SERVER_PORT"));
    Scan check example for an in-memory file byte array:
    public void scanFile(byte[] fileBytes, String fileName)
    throws IOException, Exception {
    if (scan) {
    AVClient avc = new AVClient(avServer, avPort, avMode);
    if (avc.scanfile(fileName, fileBytes) == -1) {
    throw new VirusException("WARNING: A virus was detected in
    your attachment: " + fileName + "<br>Please scan
    your system with the latest antivirus software with
    updated virus definitions and try again.");
    Note that if you are using this code inside of the MVC handler, you can throw a custom VirusException and check for it in the calling method and perform any necessary cleanup. I have included the class in the AV Jar as well.
    For example:
    catch (Exception ex) {
    logger.error(ex);
    if (ex instanceof VirusException) {
    // do something here
    else {
    // there was some other error – handle it
    For more details on the Scan Engine Client API, please see Symantec Scan Engine Software Developers Guide.
    Continuation in part2

    part 4:
    c)     Clienttester.java – This is the gui app set to test if the configuration is working or not. This gui uses the method scanfile(inputfile, outputfile) as you can see the result in the outputpane of the jframe.
    * clienttester.java
    * Created on April 12, 2005, 2:37 PM
    * @author george_maculley
    package com.av;
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class clienttester
    implements ActionListener {
    // private String ipaddress = "127.0.0.1";
    private String ipaddress = "199.209.150.58";
    //private String ipaddress = "192.168.0.55";
    static JFrame frame;
    JFileChooser chooser = new JFileChooser();
    TextField pathtofile = new TextField(System.getProperty("user.home"), 30);
    // TextField pathtooutfile= new TextField(System.getProperty("user.home"),30);
    private int port = 1344;
    JButton filechooser = new JButton("Browse to file"); ;
    private String originalfilename;
    private String outputfilename;
    JButton scanbutton = new JButton("Scan");
    TextArea outputarea = new TextArea(20, 40);
    TextField iptext = new TextField("127.0.0.1", 16);
    TextField porttext = new TextField("1344", 5);
    AVClient mine;
    JRadioButton choosescan = new JRadioButton("SCAN");
    // JRadioButton choosedelete= new JRadioButton("SCANREPAIRDELETE");
    /** Creates a new instance of gui */
    public clienttester() {
    public clienttester(java.lang.String ip, java.lang.String infile, java.lang.String outfile, int port) {
    this.ipaddress = ip;
    this.port = port;
    this.originalfilename = infile;
    this.outputfilename = outfile;
    boolean setValues(java.lang.String ip, java.lang.String infile, java.lang.String outfile, int port) {
    this.ipaddress = ip;
    this.port = port;
    this.originalfilename = infile;
    this.outputfilename = outfile;
    return (true);
    public void actionPerformed(java.awt.event.ActionEvent actionEvent) {
    JComponent c = (JComponent) actionEvent.getSource();
    if (c == filechooser) {
    int retval = chooser.showDialog(frame, null);
    if (retval == JFileChooser.APPROVE_OPTION) {
    File theFile = chooser.getSelectedFile();
    if (theFile != null) {
    pathtofile.setText(theFile.getPath());
    // pathtooutfile.setText(theFile.getPath());
    JOptionPane.showMessageDialog(frame, "You chose this file: " + theFile.getPath());
    if (c == scanbutton) {
    //return object that can be passed to AVClient
    String policy;
    int thisport;
    int scanresult;
    String thisip;
    String inputfile;
    String outputfile;
    outputarea.append("Server: " + iptext.getText() + "\r\n");
    if (choosescan.isSelected()) {
    policy = "SCAN";
    else {
    policy = "SCANREPAIRDELETE";
    thisport = new Integer(porttext.getText()).intValue();
    thisip = iptext.getText();
    //mine= new AVClient(iptext.getText(),porttext.getText(),policy);
    mine = new AVClient(iptext.getText(), thisport, policy);
    if (mine.test() == 1) {
    outputarea.append("Sorry. Incorrect parameters specified.\r\n");
    System.exit(1);
    else {
    outputarea.append("Connection to SAVSE initialized.\r\n");
    inputfile = pathtofile.getText();
    // outputfile=pathtooutfile.getText();
    outputfile = "/tmp";
    outputarea.append("Scanning file " + inputfile + " \r\n");
    if (policy == "SCAN") {
    scanresult = mine.scanfile(inputfile);
    else {
    scanresult = mine.scanfile(inputfile, outputfile);
    if (scanresult == 0) {
    outputarea.append("File is clean.\r\n");
    else if (scanresult == -1) {
    outputarea.append("File is infected. \r\n");
    else {
    outputarea.append("Scan error.\r\n");
    void display() {
    Frame f = new Frame("SAVSE JAVA ICAP Client");
    f.setLayout(new GridLayout(1, 2));
    JPanel lpanel = new JPanel(new GridLayout(7, 1));
    JPanel ippanel = new JPanel();
    JPanel portpanel = new JPanel();
    JPanel rpanel = new JPanel();
    JPanel outputpanel = new JPanel();
    JPanel buttonpanel = new JPanel();
    JPanel pathpanel = new JPanel();
    // JPanel outpathpanel= new JPanel();
    JPanel policypanel = new JPanel();
    ButtonGroup policygroup = new ButtonGroup();
    filechooser.addActionListener(this);
    scanbutton.addActionListener(this);
    choosescan.setSelected(true);
    policygroup.add(choosescan);
    // policygroup.add(choosedelete);
    buttonpanel.setBorder(BorderFactory.createTitledBorder("Scan Policy"));
    buttonpanel.add(choosescan);
    // buttonpanel.add(choosedelete);
    pathpanel.setBorder(BorderFactory.createTitledBorder("Path to File"));
    pathpanel.add(pathtofile);
    f.setSize(new Dimension(650, 400));
    f.setBackground(Color.white);
    f.setResizable(true);
    ippanel.setBorder(BorderFactory.createTitledBorder("SAVSE IP Address"));
    ippanel.add(iptext);
    outputpanel.setBorder(BorderFactory.createTitledBorder("OUTPUT"));
    outputpanel.add(outputarea);
    portpanel.setBorder(BorderFactory.createTitledBorder("ICAP Port"));
    portpanel.add(porttext);
    // outpathpanel.setBorder(BorderFactory.createTitledBorder("Path to Repair File"));
    // outpathpanel.add(pathtooutfile);
    lpanel.add(ippanel);
    rpanel.add(outputpanel);
    lpanel.add(portpanel);
    lpanel.add(buttonpanel);
    lpanel.add(pathpanel);
    // lpanel.add(outpathpanel);
    lpanel.add(filechooser);
    lpanel.add(scanbutton);
    f.add(lpanel);
    f.add(rpanel);
    f.setVisible(true);
    public static void main(String[] args) {
    clienttester g = new clienttester();
    g.display();
    d)     my2.java – This is the class file I wrote to test that I am able to send a file and scan it and see the output in the JDEVELOPER. In this case the file is stored on the filesystem of the client machine. JDEVELOPER should be able to see the file.
    NOTE:
    “EICAR.com” is the test file downloaded from Symantec site to test a non malicious virus file. I n order to be able to test it like this, the Antivirus program running on your machine should be disabled, or else Antivirus will kick in and delete the file. In the first place you will not be able to download the test virus file either with anti virus running on the machine you are downloading to.
    package com.av;
    import java.io.*;
    public class my2 {
    static int my_return = 0;
    * @param fileBytes
    * @param fileName
    * @return
    public static int scanfile(String fileName){
    String avMode = "SCAN";
    boolean scan = avMode.startsWith("SCAN");
    String avServer = "xx";--avserver ip address
    int avPort = 1344;
    int the_return = 0;
    if (scan) {
    AVClient avc = new AVClient(avServer,avPort,avMode);
    the_return = avc.scanfile(fileName);
    if (the_return == -1) {
    return (the_return);
    } else
    return (the_return);
    //my_return = the_return;
    return (the_return);
    public static void main(String[] args) throws Exception {
    System.out.println("Hi there in Main");
    byte[] b1 = new byte[4];
    b1[1] = 68;
    my_return = scanfile("c:\\eicar.com");
    System.out.println(my_return);
    e)     Then finally we have my1.JAVA, which takes the filename, and it’s contents in the bytes form and scans the file. The reason for this method is we are not storing the file on the filesystem, it is read into the memory and only if it is clean, it is put into the database or else notify the user.
    package com.av;
    import java.io.*;
    public class my1 {
    static int my_return = 0;
    static int a_length = 0;
    * @param fileBytes
    * @param fileName
    * @return
    public static int scanfile(String fileName,byte[] fileBytes) throws IOException {
    String avMode = "SCAN";
    boolean scan = avMode.startsWith("SCAN");
    String avServer = "xxx";--avserver’s ip address
    int avPort = 1344;
    int the_return = 0;
    if (scan) {
    AVClient avc = new AVClient(avServer,avPort,avMode);
    // File file = new File(fileName) ;
    //byte[] fBytes = getBytesFromFile(file);
    the_return = avc.scanfile(fileName, fileBytes);
    if (the_return == -1) {
    return (the_return);
    } else
    {return (the_return);}
    my_return = the_return;
    return (the_return);
    // Returns the contents of the file in a byte array.
    * @param file
    * @return
    * @throws IOException
    public static byte[] getBytesFromFile(File file) throws IOException {
    InputStream is = new FileInputStream(file);
    // Get the size of the file
    long length = file.length();
    // You cannot create an array using a long type.
    // It needs to be an int type.
    // Before converting to an int type, check
    // to ensure that file is not larger than Integer.MAX_VALUE.
    if (length > Integer.MAX_VALUE) {
    // File is too large
    // Create the byte array to hold the data
    byte[] bytes = new byte[(int)length];
    // Read in the bytes
    int offset = 0;
    int numRead = 0;
    while (offset < bytes.length
    && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
    offset += numRead;
    // Ensure all the bytes have been read in
    if (offset < bytes.length) {
    throw new IOException("Could not completely read file "+file.getName());
    // Close the input stream and return bytes
    is.close();
    return bytes;
    // public static void main(String[] args) throws Exception {
    //System.out.println("Hi there in Main");
    // File file = new File() ;
    // byte[] b1 = getBytesFromFile(file);
    //System.out.println(b1);
    // my_return = scanfile(,b1);
    //System.out.println(my_return); }
    Finally , you have the exceptions file,
    e) package com.av;
    public class VirusException
    extends Exception {
    public VirusException() {
    super();
    public VirusException(String text) {
    super(text);
    Once you have all these classes, you can use JDEVELOPER , to load these classes into the database: This is as follows:
    Right click on the project, which has all these classes.
    NEW -> deployment profiles -> load java and stored procedures.
    When you are created deployment profile, you have to specify,
    Loadjava options.
    -f, -v (check the check boxes)
    Under privileges:
    -s – specify database schema these classes are loaded into
    -s – create sysnonym check box
    -g – grant to public or any specific users per your policy.
    Under Resolver,
    -r and –o (check the check boxes)
    I accepted the default name storedproc1. Then you right click on the storedproc1.deploy, deploy to whichever database connection you created.
    And then, In order to access this java class we need a pl/sql wrapper as follows:
    create or replace package my1 is
    function mycheck (pfilename in varchar2, psize in number)
    return number;
    end my1;
    create or replace package body my1 is
         function mycheck (pfilename in varchar2, psize in number)
    return number is
    language java
         name 'com.av.my1.scanfile(java.lang.String, byte[]) return int';
         end my1;
    And the code is invoked from sql plus as follows:
    Select my1.mycheck(“filename”, “filebytes”) from dual;
    One important catch in the above method is to send the filename and filecontents in bytes form. In order to send the file contents as filebytes, you will need another java class and load into the data base as described above.
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    * This program demonstrates how to read a file into a byte array. This method
    * reads the entire contents of the file into a byte array.
    * @version 1.0
    * @author Jeffrey M. Hunter ([email protected])
    * @author http://www.idevelopment.info
    public class ReadFileIntoByteArray {
    * method to convert a byte to a hex string.
    * @param data the byte to convert
    * @return String the converted byte
    public static String byteToHex(byte data) {
    StringBuffer buf = new StringBuffer();
    buf.append(toHexChar((data >>> 4) & 0x0F));
    buf.append(toHexChar(data & 0x0F));
    return buf.toString();
    * Convenience method to convert an int to a hex char.
    * @param i the int to convert
    * @return char the converted char
    public static char toHexChar(int i) {
    if ((0 <= i) && (i <= 9)) {
    return (char) ('0' + i);
    } else {
    return (char) ('a' + (i - 10));
    * Returns the contents of the file in a byte array
    * @param file File this method should read
    * @return byte[] Returns a byte[] array of the contents of the file
    private static byte[] getBytesFromFile(File file) throws IOException {
    InputStream is = new FileInputStream(file);
    System.out.println("\nDEBUG: FileInputStream is " + file);
    // Get the size of the file
    long length = file.length();
    System.out.println("DEBUG: Length of " + file + " is " + length + "\n");
    * You cannot create an array using a long type. It needs to be an int
    * type. Before converting to an int type, check to ensure that file is
    * not loarger than Integer.MAX_VALUE;
    if (length > Integer.MAX_VALUE) {
    System.out.println("File is too large to process");
    return null;
    // Create the byte array to hold the data
    byte[] bytes = new byte[(int)length];
    // Read in the bytes
    int offset = 0;
    int numRead = 0;
    while ( (offset < bytes.length)
    ( (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) ) {
    offset += numRead;
    // Ensure all the bytes have been read in
    if (offset < bytes.length) {
    throw new IOException("Could not completely read file " + file.getName());
    is.close();
    return bytes;
    * @param filename
    public static byte[] chk_file(String filename) {
    byte[] fileArray = null;
    try {
    fileArray = getBytesFromFile(new File( filename));
    } catch (IOException e) {
    e.printStackTrace();
    if (fileArray != null) {
    for (int i=0; i<fileArray.length; i++) {
    System.out.println(
    "fileArray[" + i + "] = " +
    ((int)fileArray[i] < 9 ? " " : "") +
    ( ((int)fileArray[i] > 9 && (int)fileArray[i] <= 99) ? " " : "") +
    fileArray[i] + " : " +
    " HEX=(0x" + byteToHex(fileArray) + ") : " +
    " charValue=(" + (char)fileArray[i] + ")");
    return fileArray;
    * Sole entry point to the class and application.
    * @param args Array of String arguments.
    public static void main(String[] args) {
    byte[] fileArray = null;
    try {
    fileArray = getBytesFromFile(new File("c:\\eicar.com"));
    } catch (IOException e) {
    e.printStackTrace();
    if (fileArray != null) {
    for (int i=0; i<fileArray.length; i++) {
    System.out.println(
    "fileArray[" + i + "] = " +
    ((int)fileArray[i] < 9 ? " " : "") +
    ( ((int)fileArray[i] > 9 && (int)fileArray[i] <= 99) ? " " : "") +
    fileArray[i] + " : " +
    " HEX=(0x" + byteToHex(fileArray[i]) + ") : " +
    " charValue=(" + (char)fileArray[i] + ")");
    Having main method helps you to run the file in JDEVELOPER or using JAVA.
    DO not forget to load this class into the database.
    And you create the pl/sql wrapper again as follows:
    create or replace FUNCTION TOBY (pfilename in varchar2) RETURN VARCHAR2 iS
    language java name
    'ReadFileIntoByteArray.chk_file(java.lang.String) return byte[]';
    And you call the function from sqlplus as follows:
    Sql>Set serveroutput on size 20000;
    Sql> call dbms_java.set_output(20000);
    Sql> Select toby(“filename”) from dual; --
    this file should be accessible, I mean you will not be able to send a file on your pc, from sql plus as sql/plus is running on your db server.
    You will be able to see the output in sql plus:
    If you are running it from the APEX:
    When we use file browser widget from APEX, the file is stored in APEX_APPLICATION_FILES table. And we retrieve that into a variable and pass this variable to the function as follows:
    DECLARE
    scan_failed EXCEPTION;
    x varchar2(400);
    z number;
    BEGIN
    select filename into x from wwv_flow_files where name = :P1_FILE_NAME;
    select my1.mycheck(x,toby(x)) into z from dual;
    if z = 0 then
    :P1_SUBJECT:= 'PASSED';
    else
    :P1_SUBJECT:= 'FAILED';
    end if;
    :P1_SCAN_RESULT := '** Scanning File **';
    IF UPPER(:P1_SUBJECT) = 'PASSED' THEN
    BEGIN
    :P1_SCAN_FLAG := 'PASSED';
    :P1_SCAN_RESULT := :P1_SCAN_RESULT || ' ** File passed scan **';
    END;
    ELSIF UPPER(:P1_SUBJECT) = 'FAILED' THEN
    BEGIN
    :P1_SCAN_FLAG := 'FAILED';
    :P1_SCAN_RESULT := :P1_SCAN_RESULT || ' ** File failed scan **';
    END;
    ELSE
    BEGIN
    :P1_SCAN_FLAG := 'UNKNOWN';
    :P1_SCAN_RESULT := :P1_SCAN_RESULT || ' ** Scan Is Not Conclussive **';
    END;
    END IF;
    --IF :P1_SCAN_FLAG = 'FAILED'
    -- THEN RAISE scan_failed;
    --END IF;
    EXCEPTION
    WHEN OTHERS THEN
    DELETE from APEX_APPLICATION_FILES WHERE name = :P1_FILE_NAME;
    RAISE_APPLICATION_ERROR (-20000, 'seb OTHERS error encountered - file upload not allowed. Possible virus detected !');
    raise;
    END;
    ACKNOWLEDMENTS:
    1) JOHN SCOTT – who suggested this ICAP API in one of the threads which is my initial starting point in this direction.
    2) VLAD KOFMAN who wrote the article on WWW.DEVELOPER.com
    3) Mr. KIRAN –One of the engineers from Metalink, who helped me at every step of getting this java programs and pl/sql wrappers working. But for him, I would have not completed my project.

  • To Delete the uploaded file in Application Server

    Hi Friends,
    I developed an BSP Application displaying the results from ITAB though Iterator, for which , each row there is feature to upload a particular file in the Application Server, where I stored the file  path into a database table field.  .When I delete the the row, I am successfully get rid of the entire row including the file path.
    My Question.
    1. How to delete the uploaded file of the Application Server ?
    Please mail me in this regard.
    Regards
    CSM Reddy

    Hi,
    you have the keyword and you have the documentation. What is your problem?
    Search in the forums with keyword "delete dataset", there are lots of threads about this.
    Example
    Deletion of dataset in applicaiton server
    deleting file from AL11 Tcode
    Best regards
    Renald

  • Can you upload files from the iPad to a Web Browers

    I recently received an iPad and I love it. I would also love to leave my laptop at home and only use the iPad while I'm away. One thing I think is missing for this to be possible is the lack of a native filesystem, as far as I know.
    I know there are many apps that allow you to store and sync documents but I can't find a way to upload files to a website. For example, if I'm on a job site that requires me to upload my resume, the browse button on the browser is not active. I can't upload the files using the documents I've stored in Pages or in readdledocs.
    Does anyone else think this is a major shortcoming?
    Is there a way to do that I'm not aware of?
    You assistance will be greatly appreciated.
    Thanks,
    joe

    I had the same complaint. I actually stopped using my laptop for the iPad. It was frustrating having to go to the laptop just to upload a resume to career builder. I just downloaded iCab browser in the app store. I sent my resume to an external email account and signed in. You need to open the email through the iCab browser and download the file there. ICab has its own download drop box. I was able to them go to career builder and upload a resume without a problem. It may be a pain to start emailing files to yourself just to import them into the app but it's worth it not having to either copy and paste or go back to your laptop. Hope that helps and you found a job.

  • E26 253 Error while checking in and storing: \\sapserver\file.tif

    Hi Experts,
    I have now been fighting with this problem for a couple of weeks, and not been able to solve the issue.
    My problem is to upload/check-in documents from the application serve in background.
    I have a program to create DIF and attach files using BAPI_DOCUMENT_CREATE2.
    When I'm running the program in foreground there is no problem.
    When I run it in background I get the error message E26 254 Error while checking in and storing:
    sapserver\file.tif
    I have checked that the background process can see the document on the server and that is OK, so the problem must be within the actual storing of the document in DMS in the BAPI.
    Any input to how I can solve this issue is appreciated.
    Thanks in advance,
    Thomas

    Hi All,
    We have now done some testing.
    We got it to work on one of our systems but not on the other
    I ran report RSCMST on both systems with the same backend directory. (A directory on the application server of the one that fails).
    Running this report I get this result on the system that does not work.
    HTTP interface test using function group SCMS_HTTP
    21.06.2010 14:39:01
    serverInfo:
    contRep                   ZEBAN
    contRepDescription        PR Attachments
    serverStatus              running
    serverVendor              Copyright SAP AG, All rights reserved 1998, 2001
    serverVersion             6300
    serverBuild               193
    serverTime                123902
    serverDate                21.06.2010
    serverStatusDescription
    pVersion                  0046
    contRepStatus             data(89%) log(1%)
    contRepStatusDescription
                                                      ok           58.848
    create(1): new doc (frontend)                     ok          445.211
    create(2): new doc (back end)
    check_subrc: subrc     2  instead          0
    check_subrc: HTTP error: 400 Bad Request
    create(2): new doc (back end)                    error
    docGet/create(1): copy document                   ok          105.684
    info(1): existing doc                             ok           26.881
    update(1): new comp                               ok           47.050
    info(2): after update                             ok           30.458
    delete(1): unknown doc                            ok           33.061
    delete(2): unknown comp                           ok           31.669
    delete(3): existing doc                           ok           53.330
    delete(4): deleted doc                            ok           34.781
    delete(5): existing doc                           ok           31.088
    putCert:                                          ok           35.785
             1  errors
    Any ideas to what could be wrong?
    Thanks in advance.

  • Error while uploading file in Collab 4.2

    I am getting following exception while uploading file in Collab 4.2, ALUI Portal 6.1
    Error Details
    ==============================
    Collaboration encountered an error.
    If the problem persists, contact a portal administrator.
    Hide Details
    Error storing file data.com.caucho.hessian.io.HessianProtocolException:
    com.plumtree.collaboration.docman.DocManException: Error storing file data.com.caucho.hessian.io.HessianProtocolException:
    at com.plumtree.collaboration.docman.FileDataAccessManager.closeOutputStreamAndCleanUp(FileDataAccessManager.java:229)
    at com.plumtree.collaboration.docman.FileDataAccessManager.storeFileData(FileDataAccessManager.java:304)
    at com.plumtree.collaboration.docman.FileDataAccessManager.storeFileData(FileDataAccessManager.java:259)
    at com.plumtree.collaboration.docman.DMFolder.internalInsertNewFile(DMFolder.java:772)
    at com.plumtree.collaboration.docman.DMFolder.insertNewFile(DMFolder.java:862)
    at com.plumtree.collaboration.api.docman.DocumentManagerImpl.insertNewDocument(DocumentManagerImpl.java:497)
    at com.plumtree.collaboration.webui.document.UpdateDocumentUploadAction.processFinish(UpdateDocumentUploadAction.java:89)
    at com.plumtree.collaboration.webui.common.BaseUpdateEditorAction.execute(BaseUpdateEditorAction.java:77)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at com.plumtree.collaboration.webui.framework.action.CollaborationController.service(CollaborationController.java:101)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol438Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool438ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:534)
    Caused by: com.plumtree.dr.RepositoryIOException: com.caucho.hessian.io.HessianProtocolException:
    at com.plumtree.dr.transport.glue.client.operation.Operation.convertIOException(Operation.java:161)
    at com.plumtree.dr.transport.glue.client.ClientOutputStream.close(ClientOutputStream.java:81)
    at com.plumtree.dr.util.io.BoundedOutputStream.close(BoundedOutputStream.java:133)
    at com.plumtree.dr.util.io.SelfClosingOutputStream.close(SelfClosingOutputStream.java:265)
    at com.plumtree.dr.util.DocumentOutputStream.close(DocumentOutputStream.java:101)
    at com.plumtree.collaboration.docman.FileDataAccessManager.closeOutputStream(FileDataAccessManager.java:133)
    at com.plumtree.collaboration.docman.FileDataAccessManager.closeOutputStreamAndCleanUp(FileDataAccessManager.java:210)
    ... 38 more
    Caused by: com.plumtree.dr.RepositoryException: com.caucho.hessian.io.HessianProtocolException:
    at com.plumtree.dr.transport.glue.ServiceException.getRepositoryException(ServiceException.java:150)
    at com.plumtree.dr.transport.glue.client.operation.Operation.convert(Operation.java:139)
    at com.plumtree.dr.transport.glue.client.operation.Task.run(Task.java:68)
    at com.plumtree.dr.util.thread.DefaultThreadPool438Pooled.run(DefaultThreadPool.java:295)
    Caused by: com.plumtree.dr.transport.glue.ServiceException: com.caucho.hessian.io.HessianProtocolException: 2
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService438ServiceCall.call(GlueRepositoryService.java:198)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService.uploadDocumentNonChunked(GlueRepositoryService.java:90)
    at com.plumtree.dr.transport.glue.client.HessianOpenOutputStreamTask.execute(HessianOpenOutputStreamTask.java:43)
    at com.plumtree.dr.transport.glue.client.operation.Task.run(Task.java:52)
    ... 1 more
    Caused by: com.caucho.hessian.client.HessianRuntimeException: com.caucho.hessian.io.HessianProtocolException:
    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:194)
    at 438Proxy1.uploadDocumentNonChunked(Unknown Source)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService4382.execute(GlueRepositoryService.java:92)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService438ServiceCall.call(GlueRepositoryService.java:192)
    ... 4 more
    Caused by: com.caucho.hessian.io.HessianProtocolException:
    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:183)
    ... 7 more
    Caused by:
    com.plumtree.dr.RepositoryIOException: com.caucho.hessian.io.HessianProtocolException:
    at com.plumtree.dr.transport.glue.client.operation.Operation.convertIOException(Operation.java:161)
    at com.plumtree.dr.transport.glue.client.ClientOutputStream.close(ClientOutputStream.java:81)
    at com.plumtree.dr.util.io.BoundedOutputStream.close(BoundedOutputStream.java:133)
    at com.plumtree.dr.util.io.SelfClosingOutputStream.close(SelfClosingOutputStream.java:265)
    at com.plumtree.dr.util.DocumentOutputStream.close(DocumentOutputStream.java:101)
    at com.plumtree.collaboration.docman.FileDataAccessManager.closeOutputStream(FileDataAccessManager.java:133)
    at com.plumtree.collaboration.docman.FileDataAccessManager.closeOutputStreamAndCleanUp(FileDataAccessManager.java:210)
    at com.plumtree.collaboration.docman.FileDataAccessManager.storeFileData(FileDataAccessManager.java:304)
    at com.plumtree.collaboration.docman.FileDataAccessManager.storeFileData(FileDataAccessManager.java:259)
    at com.plumtree.collaboration.docman.DMFolder.internalInsertNewFile(DMFolder.java:772)
    at com.plumtree.collaboration.docman.DMFolder.insertNewFile(DMFolder.java:862)
    at com.plumtree.collaboration.api.docman.DocumentManagerImpl.insertNewDocument(DocumentManagerImpl.java:497)
    at com.plumtree.collaboration.webui.document.UpdateDocumentUploadAction.processFinish(UpdateDocumentUploadAction.java:89)
    at com.plumtree.collaboration.webui.common.BaseUpdateEditorAction.execute(BaseUpdateEditorAction.java:77)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at com.plumtree.collaboration.webui.framework.action.CollaborationController.service(CollaborationController.java:101)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol438Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool438ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:534)
    Caused by: com.plumtree.dr.RepositoryException: com.caucho.hessian.io.HessianProtocolException:
    at com.plumtree.dr.transport.glue.ServiceException.getRepositoryException(ServiceException.java:150)
    at com.plumtree.dr.transport.glue.client.operation.Operation.convert(Operation.java:139)
    at com.plumtree.dr.transport.glue.client.operation.Task.run(Task.java:68)
    at com.plumtree.dr.util.thread.DefaultThreadPool438Pooled.run(DefaultThreadPool.java:295)
    Caused by: com.plumtree.dr.transport.glue.ServiceException: com.caucho.hessian.io.HessianProtocolException: 2
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService438ServiceCall.call(GlueRepositoryService.java:198)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService.uploadDocumentNonChunked(GlueRepositoryService.java:90)
    at com.plumtree.dr.transport.glue.client.HessianOpenOutputStreamTask.execute(HessianOpenOutputStreamTask.java:43)
    at com.plumtree.dr.transport.glue.client.operation.Task.run(Task.java:52)
    ... 1 more
    Caused by: com.caucho.hessian.client.HessianRuntimeException: com.caucho.hessian.io.HessianProtocolException:
    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:194)
    at 438Proxy1.uploadDocumentNonChunked(Unknown Source)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService4382.execute(GlueRepositoryService.java:92)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService438ServiceCall.call(GlueRepositoryService.java:192)
    ... 4 more
    Caused by: com.caucho.hessian.io.HessianProtocolException:
    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:183)
    ... 7 more
    Caused by: com.plumtree.dr.RepositoryException: com.caucho.hessian.io.HessianProtocolException:
    at com.plumtree.dr.transport.glue.ServiceException.getRepositoryException(ServiceException.java:150)
    at com.plumtree.dr.transport.glue.client.operation.Operation.convert(Operation.java:139)
    at com.plumtree.dr.transport.glue.client.operation.Task.run(Task.java:68)
    at com.plumtree.dr.util.thread.DefaultThreadPool438Pooled.run(DefaultThreadPool.java:295)
    Caused by: com.plumtree.dr.transport.glue.ServiceException: com.caucho.hessian.io.HessianProtocolException: 2
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService438ServiceCall.call(GlueRepositoryService.java:198)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService.uploadDocumentNonChunked(GlueRepositoryService.java:90)
    at com.plumtree.dr.transport.glue.client.HessianOpenOutputStreamTask.execute(HessianOpenOutputStreamTask.java:43)
    at com.plumtree.dr.transport.glue.client.operation.Task.run(Task.java:52)
    ... 1 more
    Caused by: com.caucho.hessian.client.HessianRuntimeException: com.caucho.hessian.io.HessianProtocolException:
    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:194)
    at 438Proxy1.uploadDocumentNonChunked(Unknown Source)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService4382.execute(GlueRepositoryService.java:92)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService438ServiceCall.call(GlueRepositoryService.java:192)
    ... 4 more
    Caused by: com.caucho.hessian.io.HessianProtocolException:
    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:183)
    ... 7 more
    Caused by: com.plumtree.dr.transport.glue.ServiceException: com.caucho.hessian.io.HessianProtocolException: 2
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService438ServiceCall.call(GlueRepositoryService.java:198)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService.uploadDocumentNonChunked(GlueRepositoryService.java:90)
    at com.plumtree.dr.transport.glue.client.HessianOpenOutputStreamTask.execute(HessianOpenOutputStreamTask.java:43)
    at com.plumtree.dr.transport.glue.client.operation.Task.run(Task.java:52)
    at com.plumtree.dr.util.thread.DefaultThreadPool438Pooled.run(DefaultThreadPool.java:295)
    Caused by: com.caucho.hessian.client.HessianRuntimeException: com.caucho.hessian.io.HessianProtocolException:
    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:194)
    at 438Proxy1.uploadDocumentNonChunked(Unknown Source)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService4382.execute(GlueRepositoryService.java:92)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService438ServiceCall.call(GlueRepositoryService.java:192)
    ... 4 more
    Caused by: com.caucho.hessian.io.HessianProtocolException:
    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:183)
    ... 7 more
    Caused by: com.caucho.hessian.client.HessianRuntimeException: com.caucho.hessian.io.HessianProtocolException:
    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:194)
    at 438Proxy1.uploadDocumentNonChunked(Unknown Source)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService4382.execute(GlueRepositoryService.java:92)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService438ServiceCall.call(GlueRepositoryService.java:192)
    at com.plumtree.dr.transport.glue.client.GlueRepositoryService.uploadDocumentNonChunked(GlueRepositoryService.java:90)
    at com.plumtree.dr.transport.glue.client.HessianOpenOutputStreamTask.execute(HessianOpenOutputStreamTask.java:43)
    at com.plumtree.dr.transport.glue.client.operation.Task.run(Task.java:52)
    at com.plumtree.dr.util.thread.DefaultThreadPool438Pooled.run(DefaultThreadPool.java:295)
    Caused by: com.caucho.hessian.io.HessianProtocolException:
    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:183)
    ... 7 more
    Please help
    Edited by: electrazy on Aug 12, 2011 1:47 AM

    The informations are really not much to have an idea about the problem.
    The problem can be located in the fm that calls the file because is trying to search the file on a system where there are some kind of problems in the communication between the systems involved to read and pass the file. Did u map the file name with logical filenames ? Very strange problem. Can you browse in the server where the file is located . Is it on your pc ?
    Or, there is some problem in the datas provided, but this problem should arise more when you save than when you just press to load.
    With this kind of imformations is very hard to have an idea. You need to debug to see what s going on
    Regards

  • How to upload file to server physical directory

    Dear Sir,
    My Software Details:
    Oracle9i Release 1
    Oracle9iAS 1.0.2.2.2
    Solaris 8
    I have a web application developed using PL/SQL.
    How do i upload a file from user to a server physical directory through Oracle9iAS without storing in database?
    I can do this if file is uploaded to a 9ias upload table.
    But i'm looking for solution on uploading file straight to the physical server directory.
    Please advise.
    Thanks.
    Regards,
    Jap Boon Churn

    Hi Jap,
    You won't be able to do this with modplsql if that is what you are asking. modplsql only uploads file into the database.
    With that said, however, you can write your own CGI/Servlet/Perl program that does the uploading of files into the server physical directory. In your program, you will need to handle HTTP POST requests so that you can parse out the file contents and write it out onto the file system.
    I am sure there is already some CGI/Servlet/Perl program out there that does this. If you search on Google, you should be able to find some and modify it to your needs. Hope that helps. Thanks.
    Eric.

  • Download and upload files

    Hi!
    I need to develop an application where the users want to be able do download a RTF document, modify it, and save it back into the application. I know how to download a RTF document, stored as a BLOB in a table, so the document opens in a new window and the user can change it. Now, I won't the user to save the file on the disk and then upload the file through the upload page in the application, but rather to just click "save" in MS Word and close it, and then somehow the file should automatically upload in the database. Does anyone ever created something like this, using some Java Applet on the client PC maybe?
    Thanks for help,
    Alen

    Hello Mradul
    Thanks for your answer. I deleted all history (both from
    Internet and flash player). Now I have no problem downloading files
    but Internet still crash when I uploading files (I have not tried
    the other suggetions). I use Vista 32-bits. Maby Acrobat.com, when
    using Flash player 10, requires Vista 64-bits to work without
    problem? What do you think.
    I read at Adobe troubleshooting about a similar problem; that
    Flash player causes Internet to crash or freeze. Maby I should
    inform Adobe support about my problem.
    Thanks
    Fredrik

  • Bdc upload file data into internal table problem with gui_upload fm

    Hello experts,
    my coding is like this ..
    data : begin of itab occurs 0 .
    field1 like mara-matnr,
    field2......
    etc,
    end of itab.
    data: file1 type string.
    parameter :file like rlgrap-filename.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR file.
    CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
    static = 'X'
    mask = space
    field_name = 'FILE'
    CHANGING
    file_name = file.
    START-OF-SELECTION.
    FILE1 = FILE . "HERE I AM PASSING INTO STRING
    CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
    filename = FILE1
    FILETYPE = 'ASC'
    has_field_separator = 'X'
    TABLES
    data_tab = itab. " here the data is not populating from the file , it is giving the error like speified table not found.
    HERE i am getting the message like "specified table name not recgonised" . the data is not populating into the itab from the file.
    file structure is same as the internal table.
    I stored the file as .txt( ie in notepad).
    my file is like this..
    10000 200 323 sunndarrr.......
    i had a problem with this bdc , i am getting like "specified table name not recgonised" in the fm gui_upload while debugging.
    when i am using the ws_upload it is working fine.
    please guide me where i have done the mistake.
    thank you so much for all the replies.

    Hi,
    Have a look on the following code.
    TABLES: kna1.
    DATA: BEGIN OF itab1 OCCURS 0,
          str(255),
          END OF itab1.
    DATA: itab2 TYPE kna1 OCCURS 0 WITH HEADER LINE.
    CALL FUNCTION 'WS_UPLOAD'
      EXPORTING
        filename                = 'D:\ABAP EVE\ffile1.txt'
        filetype                = 'ASC'
      TABLES
        data_tab                = itab1
      EXCEPTIONS
        conversion_error        = 1
        file_open_error         = 2
        file_read_error         = 3
        invalid_type            = 4
        no_batch                = 5
        unknown_error           = 6
        invalid_table_width     = 7
        gui_refuse_filetransfer = 8
        customer_error          = 9
        no_authority            = 10
        OTHERS                  = 11.
    IF sy-subrc <> 0.
      WRITE:/ 'sorry'.
    ELSE.
      LOOP AT itab1.
        SPLIT itab1-str AT ',' INTO itab2-kunnr itab2-name1.
        APPEND itab2.
      ENDLOOP.
      IF sy-subrc = 0.
        LOOP AT itab2.
          WRITE:/ itab2-kunnr,itab2-name1.
          INSERT INTO kna1 VALUES itab2.
        ENDLOOP.
        IF sy-subrc = 0.
          WRITE:/ 'inserted'.
        ELSE.
          WRITE:/ 'not inserted'.
        ENDIF.
      ELSE.
        WRITE:/ 'fail'.
      ENDIF.
    ENDIF.
    Flat file:
    10001,Sadney
    10003,Yogesh
    20005,Madan
    1.U need to define internal table with one field of max size
    2.upload the flat file data into that internal table
    3.split that internal table data into another internal table(having fields)
    <REMOVED BY MODERATOR>
    thanks,
    Chandu
    Edited by: Alvaro Tejada Galindo on Apr 30, 2008 12:17 PM

  • Unable to upload File to DMS (Document Managemt Sys) Via web Dynpro App

    Hi .
    I want add file to DMS i,e, SAP Document Management System .
    I first tried calling BAPI : BAPI_CREATE_DOCUMENT2 in Report and I was successfull.
    I am trying out same thing via Web Dynpro Application but I am getting error in Return of BAPI .Error is Error while checking in and storing: C:\Documents and Settings\Desktop\Hi.doc.
    I am pasting code I have written on click of Upload .
    method ONACTIONON_UPLOAD .
    implicitly available data objects
    wd_Context type ref to if_wd_context_node.
    wd_This type ref to if_FileUpload.
    DATA: gv_documento TYPE draw-doknr ,
    gv_clase TYPE draw-dokar VALUE 'Z99' ,
    gv_version TYPE draw-dokvr VALUE '00',
    gv_part TYPE draw-doktl VALUE '000',
    gv_descripcion TYPE drat-dktxt VALUE 'Description111',
    gv_return TYPE bapiret2,
    filename(60) type c ,
    lt_documentdata TYPE STANDARD TABLE OF bapi_doc_draw2,
    ls_documentdata LIKE LINE OF lt_documentdata,
    lt_characteristicvalues TYPE STANDARD TABLE OF bapi_characteristic_values ,
    lt_classallocations TYPE STANDARD TABLE OF bapi_class_allocation ,
    lt_documentfiles TYPE STANDARD TABLE OF bapi_doc_files2 ,
    ls_documentfiles LIKE LINE OF lt_documentfiles ,
    lv_content type xstring ,
    size type i.
    DATA lo_el_context TYPE REF TO if_wd_context_element.
    DATA ls_context TYPE wd_this->element_context.
    DATA lv_filename LIKE ls_context-filename.
    get element via lead selection
    lo_el_context = wd_context->get_element( ).
    get single attribute
    lo_el_context->get_attribute(
    EXPORTING
    name = `FILENAME`
    IMPORTING
    value = lv_filename ).
    ls_documentdata-documenttype = 'Z99'.
    ls_documentdata-documentversion = '000'.
    ls_documentdata-documentpart = '00'.
    ls_documentdata-description = 'Test Document Created Parag'.
    ls_documentdata-STATUSEXTERN = 'WR'.
    ls_documentdata-USERNAME = 'I046361'.
    ls_documentdata-WSAPPLICATION1 = 'DOC'.
    ls_documentdata-DOCFILE1 = lv_filename.
    ls_documentdata-DATACARRIER1 = 'DEFAULT'.
    ls_documentfiles-wsapplication = 'DOC'.
    ls_documentfiles-docfile = lv_filename.
    ls_documentfiles-storagecategory = 'DMS_C1_ST'.
    ls_documentfiles-checkedin = 'X'.
    APPEND ls_documentfiles to lt_documentfiles.
    CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
    EXPORTING
    documentdata = ls_documentdata
    pf_http_dest = 'SAPHTTP'
    IMPORTING
    return = gv_return
    TABLES
    documentfiles = lt_documentfiles.
    IF gv_return-type CA 'AE'.
    WRITE gv_return-message.
    ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
    wait = 'X'.
    ENDIF .
    endmethod.
    Now Can anyone tell
    In case of Web Dynpro what Is this code right ?
    Do I need to change value of Parameters I have Set ?
    Do i need to some change as I am trying to Upload file Via WebApplication ?
    Do I have to change data Carrier ?
    Please let me know urgently .Points will be surely Given ...
    Regards ,
    Parag

    Hi ,
    Finally I was successfull in Uploading Docs.It seems I was not getting right Parameters ..anyways correct code is as follows ...
    method ONACTIONON_UPLOAD .
      implicitly available data objects
      wd_Context type ref to if_wd_context_node.
      wd_This    type ref to if_FileUpload.
    DATA:     gv_documento    TYPE draw-doknr            ,
              gv_clase        TYPE draw-dokar   VALUE 'Z99'  ,
              gv_version      TYPE draw-dokvr              VALUE '00',
              gv_part         TYPE draw-doktl VALUE '000',
              gv_descripcion  TYPE drat-dktxt VALUE 'Description111',
             gv_return       TYPE  BAPIRETURN ,
              gv_return       TYPE  BAPIRET2 ,
              gv_ruta         TYPE bapi_doc_files2-docfile VALUE 'C:\BAPI_DMS.doc' ,
              filename(60) type c ,
              lt_documentdata         TYPE STANDARD TABLE OF bapi_doc_draw2,
              ls_documentdata         LIKE LINE OF  lt_documentdata,
              lt_characteristicvalues TYPE STANDARD TABLE OF bapi_characteristic_values ,
              lt_classallocations     TYPE STANDARD TABLE OF bapi_class_allocation ,
              lt_documentfiles        TYPE STANDARD TABLE OF bapi_doc_files2 ,
              ls_documentfiles        LIKE LINE OF lt_documentfiles ,
              lv_content type xstring ,
              size type i ,
              lt_binary              TYPE TABLE OF sdokcntbin ,
              ls_binary              LIKE LINE OF lt_binary ,
              lv_size                TYPE I  ,
              ls_doc_status          TYPE  CVAPI_DOC_STATUS ,
              ls_API_ctrl            TYPE  CVAPI_API_CONTROL ,
              l_MSG                  TYPE  MESSAGES ,
              lt_files type STANDARD TABLE OF CVAPI_DOC_FILE  ,
              lt_drao  TYPE STANDARD TABLE OF DRAO  ,
              ls_drao  LIKE LINE OF lt_drao ,
              lv_documenttype      TYPE  DRAW-DOKAR ,
              lv_documentnumber TYPE  DRAW-DOKNR ,
              lv_documentversion TYPE  DRAW-DOKVR ,
              lv_documentpart  TYPE  DRAW-DOKTL ,
              lv_text          TYPE string .
          FIELD-SYMBOLS <fs> TYPE ANY.
      DATA lo_el_context TYPE REF TO if_wd_context_element.
      DATA ls_context TYPE wd_this->element_context.
      DATA lv_filename LIKE ls_context-filename   .
    get element via lead selection
      lo_el_context = wd_context->get_element(  ).
    get single attribute
      lo_el_context->get_attribute(     EXPORTING       name =  `FILENAME`     IMPORTING       value = lv_filename ).
      lo_el_context->get_attribute(     EXPORTING       name =  `FILECONTENT`     IMPORTING       value = lv_content ).
    CONCATENATE lv_text 'by' sy-uname 'cretaed at ' sy-uzeit INTO lv_text .
      ls_documentdata-documenttype    = 'Z99'.
      ls_documentdata-documentversion = '00'.
      ls_documentdata-documentpart    = '000'.
      ls_documentdata-description     = 'Test Document Created in Web Dynpro ABAP '.
      ls_documentdata-STATUSEXTERN    = 'WR'.
      ls_documentdata-USERNAME        = 'I046361'.
      ls_documentdata-WSAPPLICATION1 = 'DOC'.
      ls_documentdata-DOCFILE1        = lv_filename.
      ls_documentdata-DATACARRIER1    = 'DEFAULT'.
      ls_documentfiles-DOCUMENTTYPE       = 'Z99'.
      ls_documentfiles-WSAPPLICATION      = 'DOC'.
      ls_documentfiles-DOCUMENTVERSION    = '00'.
      ls_documentfiles-DOCUMENTPART       = '000'.
      ls_documentfiles-DOCFILE            = lv_filename.
      ls_documentfiles-description        = 'Test Document Created in Web Dynpro ABAP  '.
      ls_documentfiles-CREATED_BY         = sy-uname.
      ls_documentfiles-CHECKEDIN          = 'X'.
      ls_documentfiles-DOCFILE            = lv_filename.
      APPEND ls_documentfiles  to lt_documentfiles .
        CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'
        EXPORTING
            documentdata    = ls_documentdata
            pf_http_dest    = 'SAPHTTPA'
        IMPORTING
            DOCUMENTNUMBER  = lv_DOCUMENTNUMBER
            return          = gv_return
        TABLES
          documentfiles = lt_documentfiles.
    IF gv_return-type CA 'AE'.
      WRITE gv_return-message.
    ELSE.
       CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING     wait = 'X'.
       get message manager
       data lo_api_controller     type ref to if_wd_controller.
       data lo_message_manager    type ref to if_wd_message_manager.
       lo_api_controller ?= wd_This->Wd_Get_Api( ).
       CALL METHOD lo_api_controller->GET_MESSAGE_MANAGER
         RECEIVING
           MESSAGE_MANAGER = lo_message_manager
    CLEAR lv_text .
    CONCATENATE 'Dcoument ' lv_filename 'Successfully stored with Document No. ' lv_DOCUMENTNUMBER INTO lv_text .
       report message
       CALL METHOD lo_message_manager->REPORT_SUCCESS
         EXPORTING
           MESSAGE_TEXT             = lv_text
          PARAMS                   =
          MSG_USER_DATA            =
          IS_PERMANENT             = ABAP_FALSE
          SCOPE_PERMANENT_MSG      = CO_MSG_SCOPE_CONTROLLER
          VIEW                     =
          SHOW_AS_POPUP            =
          CONTROLLER_PERMANENT_MSG =
          MSG_INDEX                =
          CANCEL_NAVIGATION        =
    ENDIF .
    endmethod.

  • Unable to view uploaded files in Tomcat till server is refreshed

    Hi All,
    I am building an application wherein the user would have an option to upload files (can be documents or images) and once the files are uploaded the user should be able to download it.
    I am using Apache Tomcat 6.0 and JDK1.6.
    Every thing seems to be OK for the File Upload part but I have some questions in my mind for the File Download Part.
    Approach 1:
    Initially I tried to use the BLOB feature of the mysql Database to save the file as a Binary stream in the DB. However after googling it out I found out that there are serious performance issues with BLOB (The file size can be anywhere from 1 KB to 20 MB). Thus we have ruled out this approach.
    Approach 2:
    We decided to save the file path in the DB and save the file to the File System.
    For this, Initially we stored the files under the Root directory of the application but the Tomcat could not recognize the files until it was refreshed/restarted.
    This can’t be accepted for the realtime environment.
    One fix we found out for this was to create a new file directory under the web-apps folder of tomcat outside the root directory of the application and save the files in this directory. To make this work we added a new context to the tomcat configuration.
    Please suggest if this is the best approach to follow.
    Thanks
    Akash Singla
    http://www.TheDaedals.com

    Did the code properly close the outputstream on the file after writing the file contents? If it does not, then the file contents cannot be read until the handle on the file is destroyed (by restarting the java virtual machine).
    That said, it is a violation of forum's code of coduct if you spam your website in messages. Cut it out and just post it in your forum profile or only post it if it has really something valuable to add to the currently running topic subject.

  • Field in portal table for the text contained in an uploaded file

    I have uploaded a file of base item type file into release 2 of the portal.
    Does anyone know which table the clob field for the text contained in
    the uploaded file is stored?
    Thanks,
    Suzanne

    Hi,
    When you run the Search hep is it giving the description or not
    You have to create the serarch help with both the fieldname and its description field then we cna the values. Or
    Try to mantain the text table for this field and get the data.
    Get the valeusinto drop drown with this table Or create the SearchHelp for this text table
    Regards
    Lekha

Maybe you are looking for

  • How to restore a filestream enabled and rbs configured web application

    HI in sharepoint farm I taken  backup of a filestream enabled and rbs configured web application  from central admin and how to restore it in a new sharepoint farm in different server adil

  • Adobe Reader 9.2 installations

    Hello, I had a question about the installation for Adobe Reader 9.2.  We have downloaded the NOSSO .exe files from the distribution download site.  We downloaded separate files for different Operating Systems.  These OS's are: Windows XP SP2 Windows

  • "My Computer" not showing ipod shuffle 2nd gen songs

    Im trying to take the music from my ipod shuffle, make a file, and transfer the music to that file to load onto itunes. My problem is that when I click on my ipod through "My Computer", it shows that it is empty. This is a pre-used computer that I ju

  • Data Structure of ReFS file system

    Hi All   Is there anyone who can explain  Data Structure of ReFS file system   Regards

  • LOV query remains unchanged

    Hi All, I have a custom LOV VO. For bug fix I replaced the LOVVO.xml and its class files into the server. But even after repetitive bounces the LOV resultset does not get refreshed. ( Though the physical .xml file is overwriten in server) But any oth