0
gwt로 작성된 응용 프로그램과 함께 서버에 이미지를 업로드해야합니다. 작업을 수행하는 서블릿을 만들었습니다. 클라이언트 측에서는 fileupload를 사용하여 요청합니다. 로컬 호스트에서 제대로 작동하지만 내 서버에 응용 프로그램을 배포 할 때 클라이언트는 서브렛을 호출 할 수 없으며 업로드 프로세스의 결과가 없습니다.GWT 파일 업로드가 서버에서 작동하지 않는 이유는 무엇입니까?
나는이 시도했다 :
formPanel.setAction(GWT.getHostPageBaseURL() + "mygym/datiEserciziImgService"+"?idEsercizio="+id);
이 :
formPanel.setAction(GWT.getModuleBaseURL() + "datiEserciziImgService"+"?idEsercizio="+id);
하지만 결과
. 여기<servlet>
<servlet-name>datiEserciziImgService</servlet-name>
<servlet-class>it.mygym.server.service.exercises.ExercisesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>datiEserciziImgService</servlet-name>
<url-pattern>/mygym/datiEserciziImgService</url-pattern>
</servlet-mapping>
내 서블릿 코드 :
public void doPost(HttpServletRequest req, HttpServletResponse res) {
MultipartRequest multi;
File img = null;
File imgEnd = null;
try {
multi = new MultipartRequest(req, ".");
ExerciseDto dto = new ExerciseDto();
UserDto utente = (UserDto)req.getSession().getAttribute(ISessionConstants.USER_LOGGED_IN);
dto.setUserCreated(utente.getId());
dto.setUserLastUpdate(utente.getId());
Integer idEsercizio = Integer.parseInt(multi.getParameter("idEsercizio"));
ExerciseServerDto dtoServer = new ExerciseServerDto();
dtoServer.setExercise(dto);
img = multi.getFile("startFile");
dtoServer.setImg(img);
imgEnd = multi.getFile("endFile");
dtoServer.setImgEnd(imgEnd);
_log.error(new StringBuilder("IMMAGINE SERVER estensione").append(img.getName()));
res.setContentType("text/html");
String dbKey = (String)req.getSession().getAttribute(ISessionConstants.DB_KEY);
ExerciseDelegate delegate = new ExerciseDelegate(dbKey);
delegate.saveImage(dtoServer,idEsercizio);
res.getOutputStream().print("OK");
res.getOutputStream().flush();
} catch (IOException e1) {
_log.error("Errore durante il salvataggio dei dati esercizio", e1);
e1.printStackTrace();
} catch (Exception e) {
_log.error("Errore durante il salvataggio dei dati esercizio", e);
try {
res.getOutputStream().print("KO");
res.getOutputStream().flush();
} catch (IOException e1) {
_log.error("Errore durante il salvataggio dei dati esercizio", e1);
e1.printStackTrace();
}
} finally {
if (img != null)
img.delete();
if(imgEnd != null)
imgEnd.delete();
}
}
그리고 여기에 내가 가진 오류입니다 :
java.lang.IllegalArgumentException: Not writable: .
at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:219)
at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:110)
at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:90)
at it.mygym.server.service.exercises.ExercisesServlet.doPost(ExercisesServlet.java:32)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
여기
은 web.xml에 매핑입니다 어떻게이 이상한 행동을 피할 수 있습니까?
양식을 제출할 때 브라우저 또는 서버 로그에 오류가 표시됩니까? –
브라우저에 오류가 없으며 catalina.out 파일에 오류가없고 내 서버 로그 파일에 오류가 없습니다. 서블릿의 doPost 메소드에서 로그 파일에 몇 가지 정보를 씁니다. 그러나 양식을 제출할 때 아무 일도 일어나지 않습니다. –
양식이 자동으로 실패 할 수 없습니다. 200 응답을 얻습니까? –