GWT를 처음 접했고 최선의 프로그래밍 관행이 무엇을 하려는지 확실하지 않습니다. 내 웹 응용 프로그램에서 사용자는 데이터 파일을 업로드 할 수 있고, 내 응용 프로그램은이 파일에 액세스 할 수 있어야하고, 일부 작업을 수행 한 다음 사용자가 조작 된 파일을 다운로드 할 수 있어야합니다.GWT 모범 사례 업로드/다운로드
지금까지 내가 성공적으로 doPost 메소드에 업로드 서블릿과 파일을 업로드 할 수 있었다 : 내 전쟁 폴더에 보면
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory);
fileUpload.setSizeMax(FILE_SIZE_LIMIT);
List<FileItem> items = fileUpload.parseRequest(req);
for (FileItem item : items) {
if (item.isFormField()) {
logger.log(Level.INFO, "Received form field:");
logger.log(Level.INFO, "Name: " + item.getFieldName());
logger.log(Level.INFO, "Value: " + item.getString());
} else {
logger.log(Level.INFO, "Received file:");
logger.log(Level.INFO, "Name: " + item.getName());
logger.log(Level.INFO, "Size: " + item.getSize());
}
if (!item.isFormField()) {
if (item.getSize() > FILE_SIZE_LIMIT) {
resp.sendError(HttpServletResponse.SC_REQUEST_ENTITY_TOO_LARGE, "File size exceeds limit");
return;
}
String fileName = item.getName();
if (fileName != null) {
fileName = FilenameUtils.getName(fileName);
}
fileName = getServletContext().getRealPath("/uploadedFiles/" + fileName);
byte[] data = item.get();
FileOutputStream fileOutSt = new FileOutputStream(fileName);
fileOutSt.write(data);
fileOutSt.close();
if (!item.isInMemory())
item.delete();
}
}
} catch (Exception e) {
logger.log(Level.SEVERE, "Throwing servlet exception for unhandled exception", e);
throw new ServletException(e);
}
}
의 uploadedFiles 폴더가 성공적으로 생성되고 파일이 넣어 .
이 시점에서 나는 조금 붙어 있었지만 연구를 해왔으나 클라이언트 측에서 업로드 된 파일에 액세스하기 위해 가장 좋은 방법은 무엇인지 명확하고 간결한 대답을 찾을 수없는 것 같습니다. 사용자가 다운로드 할 수있게하십시오. 어쩌면 나는이 잘못에 접근하고있다, 확실하지 않다. 누군가가 올바른 방향으로 나를 가르키거나 좋은 일을 할 올바른 방법의 좋은 예를 보여줄 수 있다면, 고마워요.
사용자가 다운로드하기 전에 파일을 편집 할 수 있습니까 ?? –
@ 당신이 관리하고자하는 파일이 어떤 유형입니까? –