Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GWT项目中UploadServlet出现问题-多部分为空_Gwt_Servlets_File Upload_Apache Commons Fileupload - Fatal编程技术网

GWT项目中UploadServlet出现问题-多部分为空

GWT项目中UploadServlet出现问题-多部分为空,gwt,servlets,file-upload,apache-commons-fileupload,Gwt,Servlets,File Upload,Apache Commons Fileupload,我正在使用GWT开发一个web应用程序,我需要将一个文件上载到服务器。 我已经编写了这个servlet(我在stackoverflow上找到了它) 公共类ImageUploadService扩展了HttpServlet{ 私有静态最终int MAX_FILE_SIZE=1*1024*1024; @凌驾 受保护的void doPost(最终HttpServletRequest请求, 最终HttpServletResponse(响应){ wlog(“信息:LaServletéPARTITA”); 布

我正在使用GWT开发一个web应用程序,我需要将一个文件上载到服务器。 我已经编写了这个servlet(我在stackoverflow上找到了它)

公共类ImageUploadService扩展了HttpServlet{
私有静态最终int MAX_FILE_SIZE=1*1024*1024;
@凌驾
受保护的void doPost(最终HttpServletRequest请求,
最终HttpServletResponse(响应){
wlog(“信息:LaServletéPARTITA”);
布尔值isMultipart=/*ServletFileUpload.isMultipartContent(请求);*/true;
if(isMultipart){
wlog(“信息:IL CONTENUTOéMULTIPART”);
FileItemFactory=new DiskFileItemFactory();
ServletFileUpload upload=新的ServletFileUpload(工厂);
upload.setFileSizeMax(最大文件大小);
试一试{
列表项=upload.parseRequest(请求);
wlog(“INFO:LISTA PARTI”+Arrays.toString(items.toArray());
迭代器迭代器=items.Iterator();
while(iterator.hasNext()){
FileItem=(FileItem)迭代器.next();
如果(!item.isFormField()){
字符串文件名=item.getName();
字符串root=getServletContext().getRealPath(“/”);
文件路径=新文件(root+“/fileuploads”);
如果(!path.exists()){
布尔状态=path.mkdirs();
}
文件上传文件=新文件(路径+“/”+文件名);
item.write(上传文件);
wlog(“信息:SALVATO文件SU DISCO”);
}
}
wlog(“精细SERVLET”);
}捕获(例外e){
e、 printStackTrace();
}
}
}
私有void wlog(字符串s){
System.out.println(“上传SERVLET”+s);
}
}
这个servlet被正确调用,当我在客户机上执行form.submit()时,doPost方法会执行,但问题是upload.parseRequest总是返回一个空列表。 当我在这里搜索解决方案时,我发现这种行为的主要原因是请求之前已经被解析过,但是,从我发布的代码中可以看出,我以前从未解析过请求。parseRequest()。 我真的很想弄明白问题的症结所在,因为到目前为止所有的解决方案都没有奏效。 感谢所有帮助发现错误的人。。 (如果有帮助,我可以发布客户端代码,尽管我认为问题不在那里)

编辑:插入的客户端代码

private void inserisciSegnalazioneOK() {

    final PopupPanel inserisciSegnalazionePopup = new PopupPanel();

    VerticalPanel inseriscisegnalazioneholder = new VerticalPanel();

    final FormPanel textform = new FormPanel();
    final FormPanel uploadform = new FormPanel();
    Button inseriscisegnalazionebtn = new Button("INSERISCI SEGNALAZIONE");

    VerticalPanel textholder = new VerticalPanel();
    VerticalPanel uploadholder = new VerticalPanel();

    final Segnalazione segnalazione = new Segnalazione();
    final ListBox lbcat = new ListBox();
    for (String s : listaCategorie)
        lbcat.addItem(s);
    final TextBox descrizione = new TextBox();
    final GoogleSuggestBox gsb = new GoogleSuggestBox();
    final FileUpload fu = new FileUpload();

    textholder.add(new Label("scegli la categoria della segnalazione"));
    textholder.add(lbcat);
    textholder.add(new Label("inserisci una descrizione testuale"));
    textholder.add(descrizione);
    textholder.add(new Label("inserisci l'indirizzo della segnalazione"));
    textholder.add(gsb);

    uploadholder.add(new Label(
            "se puoi, allega una foto della segnalazione"));
    uploadholder.add(fu);

    textform.add(textholder);
    uploadform.add(uploadholder);

    inseriscisegnalazioneholder.add(textform);
    inseriscisegnalazioneholder.add(uploadform);
    inseriscisegnalazioneholder.add(inseriscisegnalazionebtn);

    inserisciSegnalazionePopup.setWidget(inseriscisegnalazioneholder);

    inseriscisegnalazionebtn.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            // TODO Auto-generated method stub

            segnalazione.setCategoria(lbcat.getItemText(lbcat
                    .getSelectedIndex()));
            segnalazione.setDescrizione(descrizione.getText());
            segnalazione.setIndirizzo(gsb.getText());
            segnalazione.setUtente(username);
            log("INFO: upload del file " + fu.getFilename());
            textform.submit();
            uploadform.submit();

        }

    });

    uploadform.setAction(GWT.getModuleBaseURL() + "imageUpload");
    uploadform.setEncoding(FormPanel.ENCODING_MULTIPART);
    uploadform.setMethod(FormPanel.METHOD_POST);

    uploadform.addSubmitHandler(new FormPanel.SubmitHandler() {

        @Override
        public void onSubmit(SubmitEvent event) {
            // TODO Auto-generated method stub
            if (fu.getFilename().length() == 0) {
                Window.alert("Non hai eseguito l'upload di nessuna immagine");
                event.cancel();
            }
        }
    });

    textform.addSubmitHandler(new FormPanel.SubmitHandler() {

        @Override
        public void onSubmit(SubmitEvent event) {
            // TODO Auto-generated method stub

            dataLayerService.inserisciSegnalazione(segnalazione,
                    new AsyncCallback<Boolean>() {

                        @Override
                        public void onFailure(Throwable caught) {
                            // TODO Auto-generated
                            // method stub
                            caught.printStackTrace();
                        }

                        @Override
                        public void onSuccess(Boolean result) {
                            // TODO Auto-generated
                            // method stub
                            if (result) {
                                Window.alert("Inserimento avvenuto con successo");
                                inserisciSegnalazionePopup.hide();
                                gc.getLatLng(segnalazione.getIndirizzo(),
                                        new LatLngCallback() {

                                            @Override
                                            public void onFailure() {
                                                // TODO
                                                // Auto-generated
                                                // method
                                                // stub

                                            }

                                            @Override
                                            public void onSuccess(
                                                    LatLng point) {
                                                // TODO
                                                // Auto-generated
                                                // method
                                                // stub
                                                Marker m = new Marker(point);
                                                map.addOverlay(m);
                                                listaMarker.add(m);
                                            }

                                        });
                            } else
                                Window.alert("L'inserimento ha avuto esito negativo");
                        }

                    });

        }

    });

    inserisciSegnalazionePopup.setAutoHideEnabled(true);
    inserisciSegnalazionePopup.setGlassEnabled(true);
    inserisciSegnalazionePopup.center();

}
private void inserissignalazioneok(){
最终PopupPanel InserisceneLazionePopup=新PopupPanel();
VerticalPanel InsertisegnalazioneHolder=新的VerticalPanel();
最终FormPanel textform=新FormPanel();
最终FormPanel uploadform=新FormPanel();
按钮INSERISCISEGNALAZONEBTN=新按钮(“INSERISCI SEGNALAZONE”);
VerticalPanel textholder=新的VerticalPanel();
VerticalPanel uploadholder=新的VerticalPanel();
最终Segnalazione Segnalazione=新Segnalazione();
最终列表框lbcat=新列表框();
对于(字符串s:listaCategorie)
lbcat.addItem(s);
最终文本框说明E=新文本框();
最终GoogleSuggestBox gsb=新的GoogleSuggestBox();
最终文件上传fu=新文件上传();
text holder.add(新标签(“scegli la categoria della segnalazione”);
textholder.add(lbcat);
添加(新标签(“inserisci una Descriptione testuale”);
textholder.add(descripione);
添加(新标签(“inserisci l'indirizzo della segnalazione”);
textholder.add(gsb);
uploadholder.添加(新标签(
“这是一个寓言,寓言是一个寓言”);
上传持有者。添加(fu);
textform.add(textholder);
uploadform.add(上传持有者);
inseriscesignalazioneholder.add(textform);
inserissignalazioneholder.add(上传表单);
inserissignalazioneholder.add(inserissignalazionebtn);
setWidget(InserissignalazioneHolder);
inserissignalazionebtn.addClickHandler(新的ClickHandler(){
@凌驾
公共作废一次点击(点击事件){
//TODO自动生成的方法存根
segnalazione.setCategoria(lbcat.getItemText(lbcat
.getSelectedIndex());
setDescriptione(descripione.getText());
segnalazione.setIndirizzo(gsb.getText());
segnalazione.setutenet(用户名);
日志(“信息:上传del文件”+fu.getFilename());
textform.submit();
uploadform.submit();
}
});
setAction(GWT.getModuleBaseURL()+“imageUpload”);
uploadform.setEncoding(FormPanel.ENCODING\u MULTIPART);
uploadform.setMethod(FormPanel.METHOD\u POST);
uploadform.addSubmitHandler(新的FormPanel.SubmitHandler(){
@凌驾
提交时公共无效(提交事件){
//TODO自动生成的方法存根
if(fu.getFilename().length()==0){
窗口警报(“非hai eseguito l'upload di nessuna immagine”);
event.cancel();
}
}
});
textform.addSubmitHandler(新的FormPanel.SubmitHandler(){
@凌驾
提交时公共无效(提交事件){
//TODO自动生成的方法存根
dataLayerService.Inseriscesignalazione(segnalazione,
新的AsyncCallback(){
@凌驾
失败时的公共无效(可丢弃){
//TODO自动生成
//方法存根
已捕获。printStackTrace();
}
@凌驾
成功时的公共void(布尔结果){
//TODO自动生成
//方法存根
如果
private void inserisciSegnalazioneOK() {

    final PopupPanel inserisciSegnalazionePopup = new PopupPanel();

    VerticalPanel inseriscisegnalazioneholder = new VerticalPanel();

    final FormPanel textform = new FormPanel();
    final FormPanel uploadform = new FormPanel();
    Button inseriscisegnalazionebtn = new Button("INSERISCI SEGNALAZIONE");

    VerticalPanel textholder = new VerticalPanel();
    VerticalPanel uploadholder = new VerticalPanel();

    final Segnalazione segnalazione = new Segnalazione();
    final ListBox lbcat = new ListBox();
    for (String s : listaCategorie)
        lbcat.addItem(s);
    final TextBox descrizione = new TextBox();
    final GoogleSuggestBox gsb = new GoogleSuggestBox();
    final FileUpload fu = new FileUpload();

    textholder.add(new Label("scegli la categoria della segnalazione"));
    textholder.add(lbcat);
    textholder.add(new Label("inserisci una descrizione testuale"));
    textholder.add(descrizione);
    textholder.add(new Label("inserisci l'indirizzo della segnalazione"));
    textholder.add(gsb);

    uploadholder.add(new Label(
            "se puoi, allega una foto della segnalazione"));
    uploadholder.add(fu);

    textform.add(textholder);
    uploadform.add(uploadholder);

    inseriscisegnalazioneholder.add(textform);
    inseriscisegnalazioneholder.add(uploadform);
    inseriscisegnalazioneholder.add(inseriscisegnalazionebtn);

    inserisciSegnalazionePopup.setWidget(inseriscisegnalazioneholder);

    inseriscisegnalazionebtn.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            // TODO Auto-generated method stub

            segnalazione.setCategoria(lbcat.getItemText(lbcat
                    .getSelectedIndex()));
            segnalazione.setDescrizione(descrizione.getText());
            segnalazione.setIndirizzo(gsb.getText());
            segnalazione.setUtente(username);
            log("INFO: upload del file " + fu.getFilename());
            textform.submit();
            uploadform.submit();

        }

    });

    uploadform.setAction(GWT.getModuleBaseURL() + "imageUpload");
    uploadform.setEncoding(FormPanel.ENCODING_MULTIPART);
    uploadform.setMethod(FormPanel.METHOD_POST);

    uploadform.addSubmitHandler(new FormPanel.SubmitHandler() {

        @Override
        public void onSubmit(SubmitEvent event) {
            // TODO Auto-generated method stub
            if (fu.getFilename().length() == 0) {
                Window.alert("Non hai eseguito l'upload di nessuna immagine");
                event.cancel();
            }
        }
    });

    textform.addSubmitHandler(new FormPanel.SubmitHandler() {

        @Override
        public void onSubmit(SubmitEvent event) {
            // TODO Auto-generated method stub

            dataLayerService.inserisciSegnalazione(segnalazione,
                    new AsyncCallback<Boolean>() {

                        @Override
                        public void onFailure(Throwable caught) {
                            // TODO Auto-generated
                            // method stub
                            caught.printStackTrace();
                        }

                        @Override
                        public void onSuccess(Boolean result) {
                            // TODO Auto-generated
                            // method stub
                            if (result) {
                                Window.alert("Inserimento avvenuto con successo");
                                inserisciSegnalazionePopup.hide();
                                gc.getLatLng(segnalazione.getIndirizzo(),
                                        new LatLngCallback() {

                                            @Override
                                            public void onFailure() {
                                                // TODO
                                                // Auto-generated
                                                // method
                                                // stub

                                            }

                                            @Override
                                            public void onSuccess(
                                                    LatLng point) {
                                                // TODO
                                                // Auto-generated
                                                // method
                                                // stub
                                                Marker m = new Marker(point);
                                                map.addOverlay(m);
                                                listaMarker.add(m);
                                            }

                                        });
                            } else
                                Window.alert("L'inserimento ha avuto esito negativo");
                        }

                    });

        }

    });

    inserisciSegnalazionePopup.setAutoHideEnabled(true);
    inserisciSegnalazionePopup.setGlassEnabled(true);
    inserisciSegnalazionePopup.center();

}