FileUpload с пользовательским интерфейсом в GWT.Сервлет вызван, но содержимое файла не извлекается - PullRequest
0 голосов
/ 07 декабря 2011

Я создал виджет загрузки файла, используя UI.xml.Письменный сервлет.Мой сервлет вызывает, но содержимое файла не извлекается.Я вставил свой код здесь.Можете ли вы ответить, в чем проблема и как получить содержимое?Это первый раз, используя это.Пожалуйста, дайте мне знать.

Интерфейс пользователя

<g:FormPanel ui:field="uploadDPAFormPanel">

        <g:HorizontalPanel>
            <g:Label> File
                Upload: &nbsp;&nbsp;&nbsp;</g:Label>
            <g:FileUpload ui:field="fileUpload" />

            <g:Button ui:field="uploadButton" title="Upload"
                Upload</g:Button>
        </g:HorizontalPanel>

</g:FormPanel>

Ниже приведен мой класс инструмента:

@UiHandler("uploadButton")
void onClickUploadButton(ClickEvent event) {
    GWT.log("You selected: " + fileUpload.getFilename(), null);
    uploadDPAFormPanel.submit();
}
public void init() {
    uploadDPAFormPanel.setEncoding(FormPanel.ENCODING_MULTIPART);
    uploadDPAFormPanel.setMethod(FormPanel.METHOD_POST);
    uploadDPAFormPanel.setAction(GWT.getHostPageBaseURL()
            + uploadServlet);
    uploadDPAFormPanel.addSubmitHandler(new FormPanel.SubmitHandler() {

        @Override
        public void onSubmit(SubmitEvent event) {

             if (!"".equalsIgnoreCase(fileUpload.getFilename())) { 
                 GWT.log("UPLOADING FILE????", null);   
                 // NOW WHAT???? 
                 }  
             else{  
                 GWT.log("UPLOA event cancel");
                 event.cancel(); // cancel the event  
                 } 
             } 
         }); 

    uploadDPAFormPanel
    .addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() {
        @Override
        public void onSubmitComplete(SubmitCompleteEvent event) {
            //TODO need to write code to refresh the page
            doAlert("Uploaded sucessfully");
        }
    });
}

Ниже приведен мой класс сервлета:

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        ServletFileUpload upload = new ServletFileUpload();
        log.debug("UploadServlet upload:"+upload);
        try {


        FileItemIterator iter = upload.getItemIterator(request);
        log.debug("UploadServlet iter:"+iter);
        System.out.println("UploadServlet iter:"+iter);
        while (iter.hasNext()) {

            FileItemStream item = iter.next();
            log.debug("UploadServlet iter:Field Name:"+item.getFieldName());
            System.out.println(":Field Name:"+item.getFieldName());
            System.out.println(":Name:"+item.getName());
            System.out.println(":is form field:"+item.isFormField());
            String name = item.getFieldName();
            InputStream stream = item.openStream();
            // Process the input stream
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            int len;
            byte[] buffer = new byte[8192];
            while ((len = stream.read(buffer, 0, buffer.length)) != -1) {
                out.write(buffer, 0, len);
            }
            int maxFileSize = 10 * (1024 * 2); // 10 megs max
            if (out.size() > maxFileSize) {
                throw new RuntimeException("File is > than " + maxFileSize);
            }
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

1 Ответ

1 голос
/ 08 декабря 2011

Вы должны установить name="..." на вашем FileUpload.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...