我在使用GWTUpload上传到GAE后解析CSV文件时遇到了问题。上传似乎工作得很好,但我有一个问题,从文件中读取数据使用getInputStream
方法从FileItem。我的代码是这样的:
for (FileItem item : sessionFiles) {
if (!item.isFormField()) {
logger.log(Level.INFO, "file item is: " + item.getName());
try{
/* The below line prints -1 when uncommented
* logger.log(Level.INFO, "input stream read is: " + item.getInputStream().read());
*/
InputStreamReader insr = new InputStreamReader(item.getInputStream());
//This is just for debugging purposes
//String insString = Integer.toString(insr.read());
BufferedReader br = new BufferedReader(insr);
//logger.log(Level.INFO, "first row is: " + br.readLine());
logger.log(Level.INFO, "calling on parseCSV");
parseCSV(br);
}
catch(Exception e){
throw new UploadActionException(e);
}
}
}
我只上传一个文件使用SingleUploader,它似乎上传正确。例如,
logger.log(Level.INFO, "file item is: " + item.getName());
行正确输出CSVExample.csv。然而,
logger.log(Level.INFO, "file item is: " + item.getName());
行总是输出-1,表示流的结束。
我的csv文件是这样的:
,vendor_food,open,emptyKey,,Hot Dogs,49.28241993,-123.1243637
DT56,vendor_food,open,invalidLat,Coal Harbour Seawall - 200 Metres Northeast of Broughton St,Hot Dogs,tt,-123.1236823
E423,vendor_food,open,invalidLon,,Hot Dogs,49.28449252,tt
EB05,vendor_food,open,emptyLat,,Hot Dogs,,-123.1432294
EB07,vendor_food,open,emptyType,,,49.28763934,-123.1425256
GM02,vendor_food,pending,closed,,Hot Dogs,49.28298256,-123.1172526
GM05,vendor_food,open,valid,sadsadsadsadsadsad,Hot Dogs,49.28051786,-123.1209519
有没有人有任何建议,我做错了什么?
这是一段时间以前的事了,但我想我应该更新一下,以防有一天有人遇到这个。
从文件上传到我在上面的代码块中解析它的时间,来自每个FileItem的输入流已经被访问过。所以当我读取输入流的时候什么都没有。我不记得它被访问的确切位置,但我模糊地记得它发生在doGet方法中。