Extjs
を使用して複数のファイルをアップロードしようとしていますJava
が、「application / x-www-form-urlencoded」コンテンツタイプを使用して、からすべてのデータとファイルの名前を取得していますHttpRequest
。そして、私はある種のファイルをアップロードする必要があります。docタイプまたはImageタイプにすることができます。
私の問題は次のとおりです。
1)静的ファイルパスを指定している間、その静的な場所からのすべてのファイルが正常にアップロードされます。ただし、1つの静的な場所ではなく、異なる場所から複数のファイルをアップロードする必要があるため、できるだけ早くサポートしてください。
これは私のファイルアップロードコントローラーコードです
@RequestMapping(value = "views/upload.action", method = RequestMethod.POST)
public @ResponseBody
Map<String, Object> create(HttpServletRequest request) throws IOException {
Map<String, Object> fileUpload = new HashMap();
boolean success = false;
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = (String) headerNames.nextElement();
if (headerName.equals("x-file-name")) {
System.out.println("Header " + headerName);
System.out.println(request.getHeader(headerName));
BufferedReader reader = request.getReader();
StringBuilder sb = new StringBuilder();
String line = reader.readLine();
while (line != null) {
sb.append(line + "\n");
line = reader.readLine();
}
reader.close();
String data = sb.toString();
success = copyFile(data, request.getHeader(headerName));
}
}
fileUpload.put("success", success);
return fileUpload;
}
// open file for input
private boolean openFileInput(File file) {
try {
fis = new FileInputStream(file);
dis = new DataInputStream(new BufferedInputStream(fis));
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
LOGGER.error("File Not Found...!");
return false;
}
}
// copies file
private boolean copyFile(String fileData, String fileName) {
File file = new File("C://Documents and Settings/infosoft03/Desktop/"
+ fileName);
//dis = new DataInputStream(new BufferedInputStream(inputStream));
// File file = new File(fileName);
boolean success = false;
try {
File dir = new File(PropertyReader.getValue("uploadpath"));
if (!dir.exists()) {
dir.mkdir();
}
// org.apache.commons.io.FileUtils.writeStringToFile(file,
// fileData);
//success = openFileInput(file);
if (success) {
success = true;
fos = new FileOutputStream(
PropertyReader.getValue("uploadpath") + fileName);
dos = new DataOutputStream(new BufferedOutputStream(fos));
byte[] b = new byte[(int) file.length()];
System.out.println("file length" + b.length);
for (int i = 0; i < b.length; i++) {
b[i] = dis.readByte();
}
dos.write(b);
}
} catch (IOException e) {
System.out.println("IOException" + e.getMessage());
e.printStackTrace();
return success;
} finally {
if (dos != null) {
closeOutputStream(dos);
}
if (fos != null) {
closeOutputStream(fos);
}
}
return success;
}