我正在使用Spring和Hibernate。我使用commons-fileupload-1.2.2上傳圖像,如下所示。FileNotFoundException將文件保存在兩個單獨的文件夾中
String itemName = null;
String files = null;
String itemStatus="true";
Random rand=new Random();
Long randNumber=Math.abs(rand.nextLong());
Map<String, String> parameters=new HashMap<String, String>();
if (ServletFileUpload.isMultipartContent(request))
{
ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
List<FileItem> items = null;
try
{
items = upload.parseRequest(request);
}
catch (FileUploadException e)
{
mv.addObject("msg", e.getMessage());
mv.addObject("status", "-1");
}
for(FileItem item:items)
{
if (!item.isFormField()&&!item.getString().equals(""))
{
itemName = item.getName();
parameters.put(item.getFieldName(), item.getName());
itemName = itemName.substring(itemName.lastIndexOf(File.separatorChar) + 1, itemName.length());
itemName=randNumber+itemName;
files = files + " " + itemName;
ServletContext sc=request.getSession().getServletContext();
File savedFile = new File(sc.getRealPath("images") , itemName);
item.write(savedFile);
File medium = new File(sc.getRealPath("images"+File.separatorChar+"medium") , itemName);
item.write(medium);
}
}
}
凡itemName
是圖像文件的名稱解析請求(enctype="multipart/form-data"
)之後。
該圖像首先保存在images
文件夾中,然後保存在images/medium
文件夾中。它不工作造成FileNotFoundException
但是當我保存只有一個文件(註釋掉其中之一)可以在本
File savedFile = new File(sc.getRealPath("images") , itemName);
item.write(savedFile);
或本
File medium = new File(sc.getRealPath("images"+File.separatorChar+"medium") , itemName);
item.write(medium);
它的工作原理。爲什麼不能同時將這兩個文件保存在單獨的文件夾中?
然後,我改變上傳圖片的方式。我現在只上傳一次圖像(像'item.write(savedFile);')一次,然後按照我的要求重新調整圖像大小後,將圖像複製到不同的文件夾,如「images/medium」和「images/thumb」。它按我的預期工作。非常有用的答案。非常感謝你。 – Tiny