【问题标题】:GWTUpload InputStream returning -1GWTUpload InputStream 返回 -1
【发布时间】:2014-03-08 21:48:21
【问题描述】:

我在使用 GWTUpload 将 CSV 文件上传到 GAE 后解析它时遇到问题。上传似乎工作正常,但我在使用 FileItem 中的 getInputStream 方法从文件中读取数据时遇到问题。我的代码如下所示:

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());

line 总是输出 -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

有人对我做错了什么有任何建议吗?

【问题讨论】:

  • 我已经导入了那个库。当我使用 getSize 检查文件的大小时,它返回 500,这与我正在上传的文件相同。

标签: google-app-engine gwt inputstream gwtupload fileitem


【解决方案1】:

这是不久前的事了,但我想我会更新以防万一有一天其他人遇到这个问题。

从上传文件到我在上面的代码块中解析它,每个 FileItem 的输入流已经被访问过。所以当我去阅读输入流时,那里什么都没有。我不记得它被访问的确切位置,但我隐约记得它发生在 doGet 方法中。

【讨论】:

    猜你喜欢
    • 2015-05-11
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多