2014-08-29 4 views
0

Tapestry 웹 애플리케이션이 있습니다. 나는 아래의 간단한 자바 스크립트를 사용하고, AJAXified 파일 업로드를 구현하기 위해 (나는 태피스트리에 대한 아약스 업로드 솔루션을 기존의 평가,하지만 그들이 일을 얻을 수 없었다) : Ajax 파일 업로드 Tapestry 5.4

var fileSelect = document.getElementById('file-select'); 
var files = fileSelect.files; 
var formData = new FormData(); 
var file = files[0]; 
formData.append("file", file, file.name); 
var xmlhttp; 
if (window.XMLHttpRequest) { 
    xmlhttp=new XMLHttpRequest(); 
} else {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
     console.log(xmlhttp.responseText); 
    } 
} 
xmlhttp.open("POST", "FileUpload",true); 
xmlhttp.send(formData); 
} 

그리고 는 FileUpload에서

내가 파일을 업로드 할 때

이제
@Inject 
private Request request; 

public Object onActivate() { 
String fileName = request.getParameter("file"); 
String path = "c:\\tapestry_temp"; 
File file = new File(path, fileName); 
if (file.exists()) { 
System.out.println("File found"); 
} else { 
System.out.println("File not found"); 
} 
} 
.... 

는, 자바 스크립트가 문제없이 실행되고 는 FileUpload 페이지에서 fileName에는 (남를 올바른 값이 있습니다 페이지, 내가 가진 업로드 된 파일의 e). 그러나 업로드 된 파일에 액세스하는 방법을 모르겠습니다. 저장 위치는 어디입니까?

추신 : AppModule (ContributeApplicationDefaults), 나는 사전에

configuration.add(UploadSymbols.REPOSITORY_LOCATION,"c:\\tapestry_temp"); 

감사합니다.

답변

0

문제가 해결되었습니다. 페이지 템플릿

:

<input type="file" id="fileUpload" name="fileUpload" /> 
<input type="button" id="fileUploadButton" onclick="return fileUpload();" value="Upload" /> 

자바 스크립트 부분 :

@Inject 
private RequestGlobals requestGlobals; 

public Object onActivate() { 
    try { 
     InputStream input = requestGlobals.getHTTPServletRequest().getInputStream(); 
     ... 
     FileOutputStream output = new FileOutputStream(pdfFile); 

     final int BUFFER_SIZE = 1024; 
     byte[] buffer = new byte[BUFFER_SIZE]; 
     while (true) { 
      count = input.read(buffer); 
      if (count == -1) { 
       break; 
      } 
      output.write(buffer, 0, count); 
     } 
     input.close(); 
     output.close(); 
     .... 
:
var fileSelect = document.getElementById('file_upload"); 
var files = fileSelect.files; 
var file = files[0]; 
var formData = new FormData(); 
formData.append("file", file, file.name); 
xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
     if(xmlhttp.responseText == "true") { 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 
xmlhttp.open("POST", "Upload",true); 
xmlhttp.setRequestHeader("Content-type","application/pdf"); 
xmlhttp.send(formData); 

업로드 페이지