Я использую google app engine для разработки формы загрузки для загрузки файла csv.
У меня сейчас проблема в том, что в среде разработки действие запроса должно отправляться правильно.
В производственной среде действие запроса, кажется, работает, хотя действие одинаково для обеих форм.
* 1005 Е.Г. *
Разработка
action="http://localhost:8080/_ah/upload/ag50cy1zY2gtcmVwb3J0c3IbCxIVX19CbG9iVXBsb2FkU2Vzc2lvbl9fGAEM"
Производственное действие:
action="http://website.appspot.com/_ah/upload/AMmfu6Yer2BJaT_tW_fmc- PKvHaOHD3pnv5QH6o6d8XQQujbCWg5egbjf2sGxP5_cN6uAyvgDVOn8U40wLLXEvoQcrMDbHQQByJpTlamzBPz_8x8LN2UWKM/ALBNUaYAAAAAT1EmxMkvj7tiS9WAvYAWKPG1sN1DvmMk/"
Когда я исследую в журналах, сервер разработки заявляет, что действие:
"/ Ag50cy1zY2gtcmVwb3J0c3IbCxIVX19CbG9iVXBsb2FkU2Vzc2lvbl9fGAEM"
Где, как указано в журналах производства, действие:
"/ форма" (как и ожидалось)
Код для обоих одинаков ниже:
файл: upload.jsp
<%
request.getAttribute("message");
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
%>
<hr/>
<p>Upload a .csv file to the system.</p>
<fieldset>
<legend>Upload File</legend>
<form action="<%= blobstoreService.createUploadUrl("/upload/form") %>" method="post" enctype="multipart/form-data">
<label for="filename_1">File: </label>
<input id="filename_1" type="file" id="filename_1" name="file" size="30" onchange="checkInput();" /><br/>
<br/>
<input type="submit" id="submitBtn" value="Upload File" />
</form>
</fieldset>
файл: controller.java
else if (action.equals("/form")) {
Logger.getLogger(Controller3.class.getName()).log(Level.INFO, action);
Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(request);
List<BlobKey> bkList = blobs.get("filename_1");
BlobKey blobKey = bkList.get(0);
if (blobKey == null) {
Logger.getLogger(Controller3.class.getName()).log(Level.WARNING, "Blob null");
response.sendRedirect("/");
} else {
Logger.getLogger(Controller3.class.getName()).log(Level.WARNING, "Blob not null");
FileService fileService = FileServiceFactory.getFileService();
// Create a new Blob file with mime-type "text/plain"
AppEngineFile file = fileService.getBlobFile(blobKey);// Again, different standard Java ways of reading from the channel.
FileReadChannel readChannel = fileService.openReadChannel(file, false);
Reader reader1 = new BufferedReader(Channels.newReader(readChannel, "UTF8"));
char c = ',';
CSVReader reader = new CSVReader(reader1, c);
ArrayList<ArrayList<String>> results = reader.getResults();
ArrayList<String> columns = reader.getColumns();
request.setAttribute("maxColumns", columns);
request.setAttribute("csvResults", results);
//Remove the CSV file from the blobstore now we have used it.
blobstoreService.delete(blobKey);
this.getServletContext().setAttribute("csvUploadResults", results);
}
Файл web.xml был настроен для обработки запросов:
/ _ah / upload / , / upload / , / _ah / upload / upload / *
Я надеюсь, что есть простое объяснение (вероятно, есть), почему код работает в производстве, но не в разработке.
Любая помощь будет очень полезна.