使用request.getRealPath()在localhost上进行图像上传工作正常但我们在服务器中使用的是
工作,因为服务器找不到指定的路径..图像无法显示..我怎么能解决这个问题。??
这是图片上传的代码:
filePath =request.getRealPath("") + "\\img\\";
System.out.println(filePath);
String contentType = request.getContentType();
if ((contentType.indexOf("multipart/form-data") >= 0))
{
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List fileItems = upload.parseRequest(request);
// message= fileItems.get(2).toString();
Iterator i = fileItems.iterator();
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
if(fi.isFormField())
{
message=fi.getString();
System.out.println("message is : "+message);
bean.setEmp_id(Integer.parseInt(message));
}
if (!fi.isFormField()) {
String fieldName = fi.getFieldName();
System.out.println("field name"+fieldName);
fileName = fi.getName();
if (fileName.lastIndexOf("\\") >= 0) {
file = new File(filePath
+ fileName.substring(fileName
.lastIndexOf("\\")));
} else {
file = new File(filePath
+ fileName.substring(fileName
.lastIndexOf("\\") + 1));
}
fi.write(file);
答案 0 :(得分:0)
getRealPath()
给出绝对路径(在文件系统上),导致在调用参数中指定的文件。它以特定于OS的格式返回路径。
阅读request#getRealPath
了解其文档。
同时建议使用servletRequest.getSession().getServletContext().getRealPath("/")
代替servletRequest.getRealPath("/")
,因为它已被弃用。
所以最好的方法是自己为服务器提供upload path
,因为特定于操作系统的方法值可能无法访问返回的路径(权限)。
希望这会有所帮助!!