在使用GWTUpload将CSV文件上传到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有人对我做错了什么有什么建议吗?
发布于 2014-04-16 02:31:29
这是很久以前的事了,但我想我应该更新一下,以防有一天其他人遇到这种情况。
从文件上传到我在上面的代码块中解析它的时候,来自每个FileItem的输入流已经被访问。所以当我去读输入流时,那里什么也没有。我不记得它是在哪里被访问的,但我隐约记得它发生在doGet方法中。
https://stackoverflow.com/questions/22275490
复制相似问题