How to keep Uploaded file's content between calls-content is lost in region

hi,
UploadedFile content lost when saving to pageFlowScope.
the use case is to upload a binary file into db. jdev 11.1.2.3
i try to start from
http://tompeez.wordpress.com/tag/affiledownloadactionlistener/
and instead of making all the handling in inputFile's ValueChangeEventListener(),
i'd like to split functionality between inputfile and a run button.
user chooses a file using inputFile
then in backingbean of the request scope
UploadedFile file = (UploadedFile) valueChangeEvent.getNewValue();
Map<String,Object> pageFlowScope = adfFacesContext.getPageFlowScope();
pageFlowScope.put("uploadedfile",file);
in button's ActionEventListener i try to recall UploadedFile.
Map<String,Object> pageFlowScope = adfFacesContext.getPageFlowScope();
UploadedFile file;
file=(UploadedFile)pageFlowScope.get("uploadedfile");
what i found out is fileName=file.getFilename() still shows the original filename, but...
file.getLength() returns 0;
at the same time, when called from ValueChangeEventListener() file.getLength() gets the actual number of bytes
what might cause the content to disappear?
i tried to change backing bean's scope to pageFlowScope without any success
Edited by: grodno on Feb 28, 2013 4:26 AM
Edited by: grodno on Mar 1, 2013 12:49 AM

This will not work as the stream will not be available after the request.
You can set the value propety of the af:inputFile directly to the pageflowScopeBean like
<af:inputFile label="File"
                                value="#{pageFlowScope.fileData}" id="if1"/>
   private UploadedFile fileData;
    public void setFileData(UploadedFile afile)
        this.fileData = afile;
    public UploadedFile getFileData()
        return fileData;
public actionListener(ActionEvent av) {
        // and in the action listener
        // TODO aktuelles bild kann nicht über getBildNr() geladen werden
        if (getBildDatei() == null)
            return null;
        UploadedFile file = getBildDatei();
        //work as usual
}Be careful with putting the UploadFile in pageFlowScope as this scope is too broad. You should use ViewScope.
Timo

Similar Messages

  • How do I share files on iCloud between different apps?

    Hi,
    how do I share files on iCloud between different apps?
    I would like to edit simple plain text files on my Mac and my iPad using different apps. They don't see the content of each other. How do I fix this?
    example:
    when I create a .txt files:
    Byword on Mac syncs nicely with Byword on iOS.
    Ulysses 3 on Mac syncs nicely with Daedalus Touch.
    BUT, cross-sync is not possible.... :/
    How can I change this? - I would like to work with Byword on my Mac and Daedalus on the go.
    Thanks in advance!

    Cross-sync only works if an app on the iDevice allows it.  For example, some apps (editors) sync with Dropbox (icloud usually isn't the thing to use) but only in their own folders. 
    If you save a file from the mac to it's own folder, A, on dropbox and on the device you use a different app that uses its own folder, B, then you won't be able to reach folder A on the device. 
    One thing to look for in editors that support Dropbox (most do, on a device - clearly all do on a mac) is whether they access dropbox using the root folder.  From there you can drop down to any subfolder and reach the files you want.

  • How can i upload files from one ip address to another  ip address machine ?

    how can i upload files from one ip address to another ip address machine ?

    i need to copy files from one client m/c to server m/c like sftp
    please suggest solution on this

  • How do I upload files onto Pages on my iPad?

    How do I upload files onto pages on my iPad?

    You can email them to yourself and then open them in Pages by using the "open in" option in the mail app when you are viewing the attachment, you can use DropBox, or you can use iOS file sharing.
    Connect the iPad to your computer and launch iTunes. Click on your iPad's name on the left side of iTunes under  "Devices" in order to select it. Click on the Apps Tab in the iTunes window on the right. Find the Pages App in the list of File Sharing apps under the main list of apps and click on it. Then drag the files from your desktop that you want to move into the document sharing window on the right - next to the the Pages app. You can also use the Add button and navigate to the documents that way to select them. Sync your iPad if you choose to do so and then eject it when the sync completes.
    Launch the Pages app and then click on the + in the upper left corner to add a document. Select - Copy from iTunes and a window will pop up with a list of all of the documents that you dragged into the window on the computer when the iPad was connected to iTunes. Select the document from there.
    This article explains if for you as well.
    http://support.apple.com/kb/HT4088

  • How to keep XML file in memory for specified period ?

    How to keep XML file in memory for specified period or forever, I have 5 applications running on WebSphere I wants to use XML file for all the applications. I mean when one apllication is not using XML file still I wants to keep it in memory ...
    Thanx in advance ,

    Hello,you can create a DocumentManager class,
    here is my solution in the past...
    you can use static Hashtable save the xml's Document,if one application want get
    a appointed Document.first,you can find it from Hashtable,if can't find it ,you
    can create it and put into Hashtable,if the words fail to express the meaning,sorry,my english is limited
    package com.foresee.xfiles.util;
    import java.util.*;
    import org.w3c.dom.*;
    import org.apache.log4j.*;
    import com.foresee.xfiles.common.*;
    import com.foresee.xfiles.server.exception.*;
    import com.foresee.xfiles.util.*;
    * <p>Title: </p>
    * <p>Description: </p>
    * <p>Copyright: Copyright (c) 2002</p>
    * <p>Company: </p>
    * @author unascribed
    * @version 1.0
    public final class DocumentManager {
    private static Category m_log = Category.getInstance(DocumentManager.class.getName());
    static {
    PropertyConfigurator.configure(Configurator.getLCF());
    public DocumentManager() {
    //synchronized
    public static synchronized Document getTransitionDoc(String path) throws SchemaCheckOutException{
    Document m_TransitionDoc;
    m_TransitionDoc = (Document)TransitionDoc.get(path);
    if (m_TransitionDoc == null){
    XmlHelper m_xh = new XmlHelper();
    try{
    m_TransitionDoc = m_xh.getDocument(path);
    }catch (SchemaCheckOutException se){
    m_log.error("������������������������"+path+"����:"+se.getUserMsg());
    throw se;
    TransitionDoc.put(path,m_TransitionDoc);
    return m_TransitionDoc ;
    public static synchronized Document getLogicCheckDoc(String path) throws SchemaCheckOutException{
    Document m_LogicCheckDoc;
    m_LogicCheckDoc = (Document)LogicCheckDoc.get(path);
    if (m_LogicCheckDoc == null){
    XmlHelper m_xh = new XmlHelper();
    try{
    m_LogicCheckDoc = m_xh.getDocument(path);
    }catch (SchemaCheckOutException se){
    m_log.error("������������������������"+path+"����:"+se.getUserMsg());
    throw se;
    LogicCheckDoc.put(path,m_LogicCheckDoc);
    return m_LogicCheckDoc ;
    public static Hashtable TransitionDoc = new Hashtable();
    public static Hashtable LogicCheckDoc = new Hashtable();

  • How to keep both file when paste

    hi to  every one
    I would like to know how to keep both files have the same name when I copy one of them to the other folder , since I have tow options only : replace or skip !!!!!!!!!! in windows 8   

    I suspect that that's how it is supposed to be, Cyber_Defend_Team. However, I can confirm that in Windows 8.1, when I attempt to Copy and Paste files, like from my camera's SD card which starts it's numbering system at 0 each time, to my photo folder,
    I only have the following options:
    Replace the file in the destination
    Skip this file
    Compare info for both files
    Now, when I choose the Compare info for both files option, I get a secondary dialogue which shows me a thumbnail of both pictures and has a checkbox for each one in two columns (there is also a checkbox at the top of each column for multiple photos to select
    all in a given column). I'm given only two buttons on this screen, Continue and Cancel. 
    As such, Lany Zhang, I don't think that this question can be considered answered as it isn't. 

  • How can i upload files in servlets and also using jsp

    means that uploading files(.doc) or any files by using servlets and jsps

    yawmark wrote:
    saichand wrote:
    means that uploading files(.doc) or any files by using servlets and jsps
    [http://www.google.com/search?q=How+can+i+upload+files+in+servlets+and+also+using+jsp]
    ~Good topic titles are indeed brilliant search keywords. It's sad to see that it won't even come in the mind of the topicstarters to Google it before posting the topic.

  • In KE13N How can I Upload files

    In KE13N How can I Upload files ? , Other than file should be in which format?

    Hi
    You need to first save file description from the planning layout.
    You need to go to transaction KEPM open the planning method. It will open in excel format provided you layout is excel integrated . In the menu there will be a option to format setting do this, save the excel sheet in the desktop.
    Once you do format settings and there will be a menu appearing as save file description click on this. After this you can update the excel file downloaded to your desktop and upload through transaction KE13N.
    Anand

  • How can we upload file into to OCS Content repository when we are in Apex

    We have installed the Oracle Application Express 2.2.1 into the OCS 10.1.2 database.
    The Apex authentication is set to operate with OCS SSO.
    We have made a form. There is a browse button on the form. We would like if the uploaded file appeared in the OCS content database repository as
    opposed to Apex document repository.
    To put it into another word, how can we upload the file into to OCS Content repository when we are in Apex.
    Generally speaking, how can we reach content from Apex?
    We have found many java based examples to use content sdk, but how can we use them with Apex? We believe that
    content hasn't got plsql interface.
    i would highly appreciate it if you sent me a full example program.

    Hi Ram,
    Thanks for the reply
    We have a requirement to device a solution to upload the policy documents related to iProcurement
    I am planning to create an OA page to upload the content and planning to use the AOL function security to restrict the users those who can access this page .
    Is there any better way to implement the security?
    Is this approach feasible or is there any better way to approach this requirement?
    Thanks

  • 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.

  • How to fetch mpg file from content repository

    Hi All,
    I have uploaded a mpg(video) file in content repositoy. But I am not able to fetch
    it and display it using embed tag.
    is anybody aware of a right method to do the same?
    Thanks in advance.

    I was thinking there might be a difference in how the browser handles a
    path with a space when typed into the address bar vs. how the browser
    plugin/activex-object handles a path with a space when it gets it from
    the <param> or <embed> tag.
    Otherwise, I'm not sure what's going on. How content displays on
    someone's computer mostly depends on the persons's computer, how it's
    configured, what's installed, etc. If you can get the Node's BinaryValue
    from the WLP server and it has the correct ContentType and the correct
    bytes, then, at that point, WLP is no longer really involved.
    Do PDFs, word docs, audio, shockwave, and other binary media types
    stored in a WLP content repository display correctly with
    <object><embed> tags in your browser?
    Vijay wrote:
    Hi Gregory Smith,
    There is no problem with path at all. The same path if I write in address bar
    of browser it opens a widows media player and plays the video file.
    Pls suggest.
    Vijay B.
    Gregory Smith <[email protected]> wrote:
    See if using a path of
    http://etgjw4:7001/JWWebApp/ShowBinary/BEA+Repository/Ads/AdsPopup/ad1//image
    (note the + between BEA and Repository) changes anything. If so, you
    can
    use the com.bea.content.manager.ContentHelper.pathInfoEncode() method
    to
    URLEncode the node path, e.g.
    http://etgjw4:7001<%=request.getContextPath()%>/ShowBinary<%=ContentHelper.pathInfoEncode(node.getPath())%>//image
    or, the <cm:getProperty> tag supports this automatically, e.g:
    http://etgjw4:7001<%=request.getContextPath()%>/ShowBinary<cm:getProperty
    name="cm_path" node=<%=node%> conversionType="url"/>//image
    (You might need to double check that code in workshop to make sure it
    compiles).
    Greg
    Vijay wrote:
    Hi Gregory,
    When I type the repository path //property name in the browser's addressbook,
    It opens a windows media player and plays the video file.
    But when I copy the same path and paste it in embed/object tag it justloads up
    a windows media player. When I see the error details it says "Cannotopen. Please
    verify that the path and filename are correct and try again." Thereis a advanced
    button on error window clicking on that it shows "The specified streamtype is
    not recognized. (Error=C00D07E2)
    Cannot open. Please verify that the path and filename are correctand try again.
    (Error=C00D07E2)".
    can you give me a solution on this?
    The HTML code that I have written is attached to this query.
    Thanks alot,
    Vijay
    Gregory Smith <[email protected]> wrote:
    First, make sure the BinaryValue of the property of the Node has the
    correct content-type (should be video/mpeg, or similar). This can be
    in
    1 of the following ways:
    1. Look in the BLOB_CONTENT_TYPE column of the CM_PROPERTY table.
    2. Get the Node (e.g. with <cm:getNode>), then get the BinaryValue
    (with
    <cm:getProperty>), and call the getContentType() method of the BinaryValue.
    3. Show the ShowBinaryServlet on the Node in the browser and see what
    your browser does. The URL would probably be something like
    http://<server>:<port>/<webapp>/ShowBinary/<path to node>, e.g.
    http://localhost:7001/sampleportal/ShowBinary/BEA+Repository/mynode.
    You
    can bring up the properties for that in IE, or Page Info (Ctrl-I) in
    Mozilla; that should tell you the content type the browser received.
    If it's not something like video/mpeg, then that's why it's not working.
    Make sure you browser has support of mpegs in <embed> by creating a
    simple html file with an <embed> to an mpeg file (don't use the server
    at all). If that works and the content-type of the node is correct,you
    should be to create an html file with an <embed> to the URL in #3 above,
    e.g.
    <embed
    src="http://localhost:7001/sampleportal/ShowBinary/BEA+Repository/mynmode">
    </embed>
    If that works, make sure your jsp is generating the correct HTML.
    Greg
    Vijay wrote:
    I am using weblogic 8.1.
    Gregory Smith <[email protected]> wrote:
    What version of WLP are you using?
    Vijay wrote:
    Hi All,
    I have uploaded a mpg(video) file in content repositoy. But I am
    not
    able to fetch
    it and display it using embed tag.
    is anybody aware of a right method to do the same?
    Thanks in advance.
    New Web Application Page

  • How to keep PDF file clear once its been reduced in size

    Does anyone know how to keep you PDF file resolution as clear as u originally placed it once you reduce the size of its properties?

    Obviously if you reduce the resolution of the images, or compress them more sharply, you can lose quality. It is up to you to experiment with the settings to find a compromise between size and quality. There is no magic bullet.

  • How can i Upload Files from my Flex 2.0 Application?

    How can i do a Upload File funtionality with Flex 2.0? Do i
    have to make the component? How is the code in Flex/ Action Script
    to make this possible?. I'm new in this Flex world and it seems to
    me very interesting to make RIA's Applications; in fact i'm making
    a little Employees Application for my company and i'm trying this
    technology and of course i need the functionality that i asking
    for.
    Regards.
    Andres.

    I haven't tried this, but I believe what you could do is
    append
    requestHeaders to the urlrequest object that you pass into
    the file.upload()
    method. The requestHeaders is an array of name/value pairs
    that would be
    included with your post. At least in theory, I believe that
    shoudl work.
    Good luck.
    Phil
    "tantalo" <[email protected]> wrote in
    message
    news:e3q3mt$138$[email protected]..
    > Hi. Phil, how i commented in the forum the examples
    works ok, with a
    > little
    > changes to make a file Upload. Now i have another doubt,
    i need to make a
    > submit of a form with another fields and the file
    selected.
    >
    > I made a HHTP Service for that purpose with the tags
    Requests like:
    >
    > <mx:HTTPService id="empleadoRequest"
    > url="
    http://andresbarrios:8080/directorio/empleados/insertarEmpleado.jsp"
    > useProxy="false" method="POST">
    > <mx:request xmlns="">
    >
    <empresa>{empresa.selectedItem.data}</empresa>
    >
    <ubicacion>{ubicacion.selectedItem.data}</ubicacion>
    >
    <departamento>{departamento.selectedItem.data}</departamento>
    > <cedula>{cedula.text}</cedula>
    > <nombre>{nombre.text}</nombre>
    > <apellido>{apellido.text}</apellido>
    > <!--Falta Fecha de Nacimiento -->
    > <sexo>{sexo.selectedItem.data}</sexo>
    >
    <estado_civil>{estado_civil.selectedItem.data}</estado_civil>
    >
    <telefono_celular>{telefono_celular.text}</telefono_celular>
    > <extension>{extension.text}</extension>
    >
    <correo_electronico>{correo_electronico.text}</correo_electronico>
    > </mx:request>
    > </mx:HTTPService>
    > I have the global variable called "file" that contains
    the file selected.
    > I
    > want to send this file variable in the HHTPservice call
    EmpleadoRequest,
    > can i
    > do that with a Request tag like another field? or the
    only way is trougth:
    > file.upload(upload.cfm) ?;
    >
    > I want only make a one call to the server to submit the
    fields of the form
    > and
    > to upload the file at th e same time can you help me How
    can i do that?
    >
    > Thanks.
    >
    > Regards.
    >
    > Andres.
    >
    >
    >

  • How to restrict uploading files by mime type?

    Hi,
    I have been searching the forum (and Google) looking for tips on how to ensure users can only upload files of specific formats (Word, PDF, etc) for specific document types as defined within the application (e.g. Curriculum Vitae (Word), Copy of Transcripts (PDF)).
    While I have used this research to start work on a server-side solution, I would like to know if there is an apex-friendly way to "validate" a file-browse item based on mime-type.
    Has anyone else had to address this?
    Ted

    Hi,
    I would like to know if there is an apex-friendly way to "validate" a file-browse item based on mime-typeHow about, you create a check constraint on your MIMETYPE column. something similar to this:
    alter table "MY_TABLE" add constraint
    "MY_TABLE_CON" check ( "MIMETYPE" = 'application/pdf' or "MIMETYPE" = ......)Or you can use this plugin, provided using browsers supporting HTML 5:
    http://www.theapexfreelancer.com/apex/f?p=APEXFREELANCER:FILE_UPLOAD:0
    For friendly,
    Please check error handling :
    http://www.inside-oracle-apex.com/apex-4-1-error-handling-improvements-part-1/
    Best Regards,
    Fateh

  • File browse : How to keep the file path in the file browse field?

    Hello,
    I have
    1) file browse field called P2_FILE_PATH.
    2) a select list with submit : P2_REGION
    If i upload some file d:\abc.gif , then select some region in the P2_REGION,
    P2_FILE_PATH will become empty. But in the session, i can find the blob value. but not the "d:\abc.gif "
    Using the following script I could capture the value of P2_FILE_PATH in a field
    P2_TEST.
    onload="javascript:document.getElementById(P2_FILE_PATH').value = document.getElementById('P2_TEST').value;"
    P2_TEST contains d:\abc.gif .
    How to retain the file path, though some other field is selected and submitted?
    Thanks in advance.
    Regards,
    Archana

    Hello Archana,
    You can't do what you want because of some HTML security restrictions – nothing to do with APEX. As you found out, You can capture the value of this item. You can't set it. After submitting the page, the browser is the one to clear the item.
    The only workaround is to work with AJAX and not submit the page until the end of the user input phase.
    Regards,
    Arie.

Maybe you are looking for

  • Management studio error while creating/editing maintenance plan

    Hi, I had MS SQL 2012 enterprise edition installed and everything was working fine. Later I removed MS SQL 2012 and re-installed. Now when I am trying to create maintenance plan I am getting below error. When I click Yes system allows me to go throug

  • Sound clip recordings

    Hey anyone know how to save sound clip recordings from an N8 to pc ovi and find them on the pc and play on the pc, I have done a back up with ovi still carn't find the soun d clips in ovi ?? Solved! Go to Solution.

  • Dell GX620's

    has anyone else having problems PXE booting these boxes ???? we have just had a batch in and none of them will even DHCP via the pxe, but if u plug another pc into the same network socket it works fine, the dells have the Broadcom 5751 gigabit ethern

  • Lumia 930 HW Revision 2.0.0.1 vs 2.0.0.2 differenc...

    Hello, 1. Does someone know what is different on Lumia 930 between Hardware Revision 2.0.0.1 and 2.0.0.2 ? 2. I had a 2.0.0.2 and had a very bad screen, the gray background was displayed with green shades or somehow also having right on the middle of

  • A four year old iMac

    Good Morning, How can I unlock the Recovery HD on my  4-5 year old iMac? Below are the steps I have gone through. Just about when the extra extended warranty was about to run out the iMac Superdrive quit. I thought I had a few months left of extended