作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须使用用 gwt 编写的应用程序将图像上传到服务器上。我创建了一个 servlet 来完成这项工作。在客户端,我使用 fileupload 来发出请求。在本地主机上它工作正常,但是当我在服务器上部署应用程序时,客户端无法调用servlet,并且上传过程中没有结果。
我已经尝试过这个:
formPanel.setAction(GWT.getHostPageBaseURL() + "mygym/datiEserciziImgService"+"?idEsercizio="+id);
还有这个:
formPanel.setAction(GWT.getModuleBaseURL() + "datiEserciziImgService"+"?idEsercizio="+id);
但没有结果。
这是 web.xml 中的映射:
<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>
这是我的 servlet 代码:
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)
如何避免这种奇怪的行为?
最佳答案
根据您的代码,您正在使用构造函数 MultipartRequest(ServletRequest request,String saveDirectory),其中指定了“.”作为保存目录。根据错误消息,很明显保存目录不可写。请在服务器上再次检查或将其替换为服务器上的任何绝对路径。
关于java - 为什么 GWT 文件上传在服务器上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21994461/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!