Domanda

Ho creato un progetto all'interno della cartella di ofbiz/hot-deploy cioè productionmgntSystem. All'interno della cartella ofbiz\hot-deploy\productionmgntSystem\webapp\productionmgntSystem ho creato un file .ftl cioè app_details_1.ftl.The seguente è il codice di questo file

<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Insert title here</title>
        <script TYPE="TEXT/JAVASCRIPT" language=""JAVASCRIPT">
            function uploadFile()
            {
                //alert("Before calling upload.jsp");
                window.location='<@ofbizUrl>testing_service1</@ofbizUrl>'

            }

        </script>
    </head>
        <!-- <form action="<@ofbizUrl>testing_service1</@ofbizUrl>" enctype="multipart/form-data" name="app_details_frm"> -->
        <form action="<@ofbizUrl>logout1</@ofbizUrl>" enctype="multipart/form-data" name="app_details_frm"> 
        <center style="height: 299px; ">
            <table border="0" style="height: 177px; width: 788px">
                <tr style="height: 115px; ">
                    <td style="width: 103px; ">
                    <td style="width: 413px; "><h1>APPLICATION DETAILS</h1>
                    <td style="width: 55px; ">
                </tr>
                <tr>
                    <td style="width: 125px; ">Application name : </td>
                    <td>
                        <input name="app_name_txt" id="txt_1" value=" " />
                    </td>
                </tr>
                <tr>
                    <td style="width: 125px; ">Excell sheet &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </td>
                    <td>
                        <input type="file" name="filename"/>
                    </td>
                </tr>
                <tr>
                    <td>
                       <!-- <input type="button" name="logout1_cmd" value="Logout" onclick="logout1()"/> -->
                       <input type="submit" name="logout_cmd" value="logout"/>
                    </td>
                    <td>
                        <!-- <input type="submit" name="upload_cmd" value="Submit" /> -->
                        <input type="button" name="upload1_cmd" value="Upload" onclick="uploadFile()"/>
                    </td>                   
                </tr>
            </table>
        </center>
    </form>
</html>

la seguente codifica è presente nel file "ofbiz \ hot-deploy \ productionmgntSystem \ webapp \ productionmgntSystem \ WEB-INF \ Controller.xml"

......
.......
........
<request-map uri="testing_service1">
            <security https="true" auth="true"/>            
            <event type="java" path="org.ofbiz.productionmgntSystem.web_app_req.WebServices1" invoke="testingService"/>
            <response name="ok" type="view" value="ok_view"/>
            <response name="exception" type="view" value="exception_view"/>         
        </request-map>
..........
............
..........
<view-map name="ok_view" type="ftl" page="ok_view.ftl"/>        
<view-map name="exception_view" type="ftl" page="exception_view.ftl"/> 
................
.............
.............

Il seguente è il codice nel file ofbiz\hot-deploy\productionmgntSystem\src\org\ofbiz\productionmgntSystem\web_app_req\WebServices1.java

package org.ofbiz.productionmgntSystem.web_app_req;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;


public class WebServices1
{
    public static String testingService(HttpServletRequest request, HttpServletResponse response)
    {
        //int i=0;
        String result="ok";
        System.out.println("\n\n\t*************************************\n\tInside WebServices1.testingService(HttpServletRequest request, HttpServletResponse response)- Start");
        String contentType=request.getContentType();
        System.out.println("\n\n\t*************************************\n\tInside WebServices1.testingService(HttpServletRequest request, HttpServletResponse response)- contentType : "+contentType);
        String str=new String();
        // response.setContentType("text/html");
        //PrintWriter writer;
        if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0))
        {
            System.out.println("\n\n\t**********************************\n\tInside WebServices1.testingService(HttpServletRequest request, HttpServletResponse response) after if (contentType != null)");
            try
            {
                // writer=response.getWriter();
                System.out.println("\n\n\t**********************************\n\tInside WebServices1.testingService(HttpServletRequest request, HttpServletResponse response) - try Start");
                DataInputStream in = new DataInputStream(request.getInputStream());
                int formDataLength = request.getContentLength();
                byte dataBytes[] = new byte[formDataLength];
                int byteRead = 0;
                int totalBytesRead = 0;

                //this loop converting the uploaded file into byte code
                while (totalBytesRead < formDataLength)
                {
                    byteRead = in.read(dataBytes, totalBytesRead,formDataLength);
                    totalBytesRead += byteRead;
                }

                String file = new String(dataBytes);
                //for saving the file name
                String saveFile = file.substring(file.indexOf("filename=\"") + 10);
                saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
                saveFile = saveFile.substring(saveFile.lastIndexOf("\\")+ 1,saveFile.indexOf("\""));
                int lastIndex = contentType.lastIndexOf("=");
                String boundary = contentType.substring(lastIndex + 1,contentType.length());
                int pos;

                //extracting the index of file
                pos = file.indexOf("filename=\"");
                pos = file.indexOf("\n", pos) + 1;
                pos = file.indexOf("\n", pos) + 1;
                pos = file.indexOf("\n", pos) + 1;
                int boundaryLocation = file.indexOf(boundary, pos) - 4;
                int startPos = ((file.substring(0, pos)).getBytes()).length;
                int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;

                //creating a new file with the same name and writing the content in new file
                FileOutputStream fileOut = new FileOutputStream("/"+saveFile);
                fileOut.write(dataBytes, startPos, (endPos - startPos));
                fileOut.flush();
                fileOut.close();
                System.out.println("\n\n\t**********************************\n\tInside WebServices1.testingService(HttpServletRequest request, HttpServletResponse response) - try End");
            }
            catch(IOException ioe)
            {
                System.out.println("\n\n\t*********************************\n\tInside WebServices1.testingService(HttpServletRequest request, HttpServletResponse response) - Catch IOException");
                //ioe.printStackTrace();
                return("exception");
            }
            catch(Exception ex)
            {
                System.out.println("\n\n\t*********************************\n\tInside WebServices1.testingService(HttpServletRequest request, HttpServletResponse response) - Catch Exception");
                return("exception");
            }
        }
        else
        {
            System.out.println("\n\n\t********************************\n\tInside WebServices1.testingService(HttpServletRequest request, HttpServletResponse response) else part");
            result="exception";
        }
        System.out.println("\n\n\t*************************************\n\tInside WebServices1.testingService(HttpServletRequest request, HttpServletResponse response)- End");
        return(result);
    }
}

voglio caricare un file nel file server.The è ottenere dal tag utente <input type="file"..> nel file app_details_1.ftl & viene aggiornato nel server utilizzando il metodo testingService(HttpServletRequest request, HttpServletResponse response) nel WebServices1 di classe. Ma il file non viene caricato.

È stato utile?

Soluzione

Ho avuto la soluzione al mio problem.I caricare correttamente il file nella soluzione server.This ottengo dopo la grande lotta con ofbiz.I fatto un piccolo cambiamento nel mio vecchio coding.That è dato seguito.

Di seguito sono presente nella "app_details_1.ftl" Codifica

<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

        <!--<meta http-equiv="Content-Type" content="multipart/form-data; charset=ISO-8859-1">-->

        <title>Insert title here</title>
        <script TYPE="TEXT/JAVASCRIPT" language=""JAVASCRIPT">
            function uploadFile()
            {
                //alert("Before calling upload.jsp");
                window.location='<@ofbizUrl>testing_service1</@ofbizUrl>'

            }

            function logout1()
            {
                //alert("Logout1");
                alert("<@ofbizUrl>logout1</@ofbizUrl>");
                window.location='<@ofbizUrl>logout1</@ofbizUrl>'
            }
        </script>
        </head>
        <!-- <form action="<@ofbizUrl>testing_service1</@ofbizUrl>" enctype="multipart/form-data" name="app_details_frm"> -->
        <body bgcolor="cyan">
            <form enctype="multipart/form-data" action="<@ofbizUrl>uploadAttachFile</@ofbizUrl>" METHOD=POST>
                <center style="height: 299px;">
                    <table border="0" style="height: 177px; width: 788px">
                        <tr style="height: 115px; ">
                            <td style="width: 103px; ">
                            <td style="width: 440px; "><h1>APPLICATION DETAILS</h1>
                            <td style="width: 55px; ">
                        </tr>
                        <tr>
                            <td style="width: 125px; ">Application name : </br></td>
                            <td>
                                <input name="app_name_txt" id="txt_1" value=" " />
                            </td>
                            <td></br></br></td>
                        </tr>
                        <tr>
                            <td style="width: 125px; ">Excell sheet &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: </td>
                            <td>
                                <input type="file" name="filename"/>
                            </td>
                            <td></br></br></td>
                        </tr>
                        <tr>
                            <td>
                            <td></br>
                            <td>
                        </tr>
                        <tr>
                            <td>
                               <input type="button" name="logout1_cmd" value="LOGOUT" onclick="logout1()"/>
                              <!-- <input type="submit" name="logout_cmd" value="logout"/>-->
                            </td>
                            <td>
                                <input type="submit" name="upload_cmd" value="UPLOAD" />
                                <!-- <input type="button" name="upload1_cmd" value="Upload" onclick="uploadFile()"/> -->
                            </td>
                        </tr>
                    </table>
                </center>
            </form>
        </body>
</html>

Ecco le mie principali cambiamenti nella attributo action modulo.

Di seguito sono riportati frammento di codifica in "Controller.xml"

...............
.............
<request-map uri="uploadAttachFile">
            <security https="true" auth="true"/>
           <!--  <event type="simple" invoke="createCommunicationContent" path="component://productionmgntSystem/script/org/ofbiz/productionmgntSystem/CommunicationEventEvents.xml"/>  -->

           <event type="java" path="org.ofbiz.productionmgntSystem.web_app_req.Uploading" invoke="uploadFile"/>

            <response name="AttachementSuccess" type="view" value="AttachementSuccess"/>
            <response name="AttachementException" type="view" value="AttachementException"/>
        </request-map>    
................
.....................
<view-map name="AttachmentError" type="ftl" page="file_attach_error.ftl"/>
<view-map name="AttachementException" type="ftl" page="file_attach_error.ftl"/>
<view-map name="AttachementSuccess" type="ftl" page="AttachementSuccess.ftl"/>
...........
............

Qui dovrei mappare una richiesta "uploadAttachFile" per l'evento "UploadFile" .Questo è questa chiamata evento il metodo "UploadFile" all'interno della classe "org.ofbiz.productionmgntSystem.web_app_req.Uploading" .Questo classe è definita da me .Actually file di uplaod c'è in ofbiz ho appena copiare la codifica e alterati alcuni cambiamenti per la mia applicazione.

All'interno del metodo "UploadFile" è scrivo la codifica per caricare il file in server. Ho memorizzato la classe "org.ofbiz.productionmgntSystem.web_app_req.Uploading" nella seguente cartella "ofbiz \ hot-deploy \ productionmgntSystem \ src \ org \ ofbiz \ productionmgntSystem \ web_app_req". Qui il "productionmgntSystem" è il nome la mia applicazione.

Di seguito esegue la codifica presenti all'interno della classe "org.ofbiz.productionmgntSystem.web_app_req.Uploading"

//UPLOADING A CONTENT TO THE SERVER

package org.ofbiz.productionmgntSystem.web_app_req;

import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.io.FileOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.ofbiz.service.ServiceUtil;
import java.util.List;

public class Uploading
{
    public static String uploadFile(HttpServletRequest request,HttpServletResponse response)
    {
        //ServletFileUpload fu = new ServletFileUpload(new DiskFileItemFactory(10240, new File(new File("runtime"), "tmp")));           //Creation of servletfileupload
        System.out.println("\n\n\t****************************************\n\tuploadFile(HttpServletRequest request,HttpServletResponse response) - start\n\t");
        ServletFileUpload fu = new ServletFileUpload(new DiskFileItemFactory());           //Creation of servletfileupload
        java.util.List lst = null;
        String result="AttachementException";
        String file_name="";
        try 
        {
            lst = fu.parseRequest(request);
        }
        catch (FileUploadException fup_ex) 
        {
            System.out.println("\n\n\t****************************************\n\tException of FileUploadException \n\t");
            fup_ex.printStackTrace();
            result="AttachementException";
            return(result);
        }

        if(lst.size()==0)        //There is no item in lst
        {
            System.out.println("\n\n\t****************************************\n\tLst count is 0 \n\t");
            result="AttachementException";
            return(result);
        }


        FileItem file_item = null;
        FileItem selected_file_item=null;

        //Checking for form fields - Start
            for (int i=0; i < lst.size(); i++) 
            {
                file_item=(FileItem)lst.get(i);
                String fieldName = file_item.getFieldName();

                //Check for the attributes for user selected file - Start
                    if(fieldName.equals("filename"))
                    {
                        selected_file_item=file_item;
                        //String file_name=file_item.getString();                       
                        //file_name=request.getParameter("filename");
                        file_name=file_item.getName();             //Getting the file name
                        System.out.println("\n\n\t****************************************\n\tThe selected file item's file name is : "+file_name+"\n\t");
                        break;
                    }
                //Check for the attributes for user selected file - End
            }
        //Checking for form fields - End

        //Uploading the file content - Start
            if(selected_file_item==null)                    //If selected file item is null
            {
                System.out.println("\n\n\t****************************************\n\tThe selected file item is null\n\t");
                result="AttachementException";
                return(result);
            }

            byte[] file_bytes=selected_file_item.get();
            byte[] extract_bytes=new byte[file_bytes.length];

            for(int l=0;l<file_bytes.length;l++)
                extract_bytes[l]=file_bytes[l];
            //ByteBuffer byteWrap=ByteBuffer.wrap(file_bytes);
            //byte[] extract_bytes;
            //byteWrap.get(extract_bytes);


            //System.out.println("\n\n\t****************************************\n\tExtract succeeded :content are : \n\t");


            if(extract_bytes==null)
            {
                System.out.println("\n\n\t****************************************\n\tExtract bytes is null\n\t");
                result="AttachementException";
                return(result);
            }

            /*
            for(int k=0;k<extract_bytes.length;k++)
                System.out.print((char)extract_bytes[k]);
            */

            //String target_file_name="/hot-deploy/productionmgntSystem"
            //Creation & writing to the file in server - Start              
                try
                {
                    FileOutputStream fout=new FileOutputStream(file_name);
                    System.out.println("\n\n\t****************************************\n\tAfter creating outputstream");
                    fout.flush();
                    fout.write(extract_bytes);
                    fout.flush();
                    fout.close();
                }
                catch(IOException ioe_ex)
                {
                    System.out.println("\n\n\t****************************************\n\tIOException occured on file writing");
                    ioe_ex.printStackTrace();
                    result="AttachementException";
                    return(result);
                }
            //Creation & writing to the file in server - End

            System.out.println("\n\n\t****************************************\n\tuploadFile(HttpServletRequest request,HttpServletResponse response) - end\n\t");
            return("AttachementSuccess");
        //Uploading the file content - End
    }
}

Ora nel mio im applicazione in grado di caricare il file nel server.

Altri suggerimenti

Se non si desidera scrivere nel FTL e vuole scrivere in una forma semplice, ecco il mio codice. Ma prima lasciatemi ringraziare SIVAKUMAR.J per avermi messo sulla strada giusta.

Ecco il codice del form:

<form name="ImportBulkAttendance" target="uploadFileJava" type="upload" default-map-name="content" focus-field-name="contentTypeId" header-row-style="header-row" default-table-style="basic-table">

    <field name="filename" title="filename">
        <file name="filename"/>
    </field>
    <field name="createButton">
        <submit button-type="button" />
    </field>
</form>

Poi nel Controller.xml

   <request-map uri="uploadFileJava">
    <security https="true" auth="true"/>
    <event type="java" path="com.ofbiz.attendance.Uploading" invoke="uploadFile"/>
   </request-map>
<view-map name="AttachmentError" type="screen" page="component://yourComponentName/widget/yourComponentNameScreens.xml#main"/>

creare formica cartella manca in questo percorso nel progetto: yourComponentFolder / src / ofbiz / presenze / quindi creare Uploading.java

package com.ofbiz.attendance;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.io.FileOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.ofbiz.service.ServiceUtil;
import java.util.List;

public class Uploading
{
    public static String uploadFile(HttpServletRequest request,HttpServletResponse response)
    {
        //ServletFileUpload fu = new ServletFileUpload(new DiskFileItemFactory(10240, new File(new File("runtime"), "tmp")));           //Creation of servletfileupload
        System.out.println("\n\n\t****************************************\n\tuploadFile(HttpServletRequest request,HttpServletResponse response) - start\n\t");
        ServletFileUpload fu = new ServletFileUpload(new DiskFileItemFactory());           //Creation of servletfileupload
        java.util.List lst = null;
        String result="AttachementException";
        String file_name="";
        try 
        {
            lst = fu.parseRequest(request);
        }
        catch (FileUploadException fup_ex) 
        {
            System.out.println("\n\n\t****************************************\n\tException of FileUploadException \n\t");
            fup_ex.printStackTrace();
            result="AttachementException";
            return(result);
        }
    if(lst.size()==0)        //There is no item in lst
    {
        System.out.println("\n\n\t****************************************\n\tLst count is 0 \n\t");
        result="AttachementException";
        return(result);
    }


    FileItem file_item = null;
    FileItem selected_file_item=null;

    //Checking for form fields - Start
        for (int i=0; i < lst.size(); i++) 
        {
            file_item=(FileItem)lst.get(i);
            String fieldName = file_item.getFieldName();

            //Check for the attributes for user selected file - Start
                if(fieldName.equals("filename"))
                {
                    selected_file_item=file_item;
                    //String file_name=file_item.getString();                       
                    //file_name=request.getParameter("filename");
                    file_name=file_item.getName();             //Getting the file name
                    System.out.println("\n\n\t****************************************\n\tThe selected file item's file name is : "+file_name+"\n\t");
                    break;
                }
            //Check for the attributes for user selected file - End
        }
    //Checking for form fields - End

    //Uploading the file content - Start
        if(selected_file_item==null)                    //If selected file item is null
        {
            System.out.println("\n\n\t****************************************\n\tThe selected file item is null\n\t");
            result="AttachementException";
            return(result);
        }

        byte[] file_bytes=selected_file_item.get();
        byte[] extract_bytes=new byte[file_bytes.length];

        for(int l=0;l<file_bytes.length;l++)
            extract_bytes[l]=file_bytes[l];
        //ByteBuffer byteWrap=ByteBuffer.wrap(file_bytes);
        //byte[] extract_bytes;
        //byteWrap.get(extract_bytes);


        //System.out.println("\n\n\t****************************************\n\tExtract succeeded :content are : \n\t");


        if(extract_bytes==null)
        {
            System.out.println("\n\n\t****************************************\n\tExtract bytes is null\n\t");
            result="AttachementException";
            return(result);
        }

        /*
        for(int k=0;k<extract_bytes.length;k++)
            System.out.print((char)extract_bytes[k]);
        */

        //String target_file_name="/hot-deploy/productionmgntSystem"
        //Creation & writing to the file in server - Start              
            try
            {
                FileOutputStream fout=new FileOutputStream(file_name);
                System.out.println("\n\n\t****************************************\n\tAfter creating outputstream");
                fout.flush();
                fout.write(extract_bytes);
                fout.flush();
                fout.close();
            }
            catch(IOException ioe_ex)
            {
                System.out.println("\n\n\t****************************************\n\tIOException occured on file writing");
                ioe_ex.printStackTrace();
                result="AttachementException";
                return(result);
            }
        //Creation & writing to the file in server - End

        System.out.println("\n\n\t****************************************\n\tuploadFile(HttpServletRequest request,HttpServletResponse response) - end\n\t");
        return("AttachementSuccess");
    //Uploading the file content - End
}


}

Questo è tutto copiare i file con lo stesso nome e dovrebbero lavorare direttamente :) Spero che questo consente di risparmiare tempo di qualcuno. N.B. Non è necessario creare un servizio di XML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top