6

我正在尝试更新 Google 网站中的内容,并正在读取异常 VersionConflictException 中的流。

当我检查流时,一切都很好,并且完全加载到 POST 请求中,但随后出现以下错误。

org.apache.commons.fileupload.FileItemStream$ItemSkippedException
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:880)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at com.google.gdata.data.media.MediaSource$Output.writeTo(MediaSource.java:87)
at com.google.gdata.data.media.MediaBodyPart$MediaSourceDataHandler.writeTo(MediaBodyPart.java:74)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:452)
at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:157)
at com.google.gdata.wireformats.output.media.MediaMultipartGenerator.generate(MediaMultipartGenerator.java:58)
at com.google.gdata.wireformats.output.media.MediaMultipartGenerator.generate(MediaMultipartGenerator.java:37)
at com.google.gdata.client.Service.writeRequestData(Service.java:1831)
at com.google.gdata.client.media.MediaService.updateMedia(MediaService.java:497)
at com.google.gdata.data.media.MediaEntry.updateMedia(MediaEntry.java:159)
at morefile.UploadApp.updateAttachment(UploadApp.java:136)
4

5 回答 5

8

FileItemStream.ItemSkippedException

如果在创建 FileItemStream 的迭代器上调用 Iterator.hasNext() 之后尝试从 FileItemStream.openStream() 返回的 InputStream 读取数据,则会引发此异常。

于 2009-11-19T09:10:39.030 回答
0

我不想吵醒僵尸——这只是为了将来参考。

这基本上是一个糟糕的实现apache-commons-fileupload。调用永远不hasNext()应该使最后一次调用的结果无效。例如,你不能做这样的事情next()

List collection;
while(hasNext(){
   Object o = next();
   collection.add(o);
}

因为如果您访问列表中的任何项目,它将导致ItemSkippedException.

于 2012-08-06T13:25:03.767 回答
0

我遇到了同样的问题。我发现它是由两次调用'Streams.asString(stream)'引起的。查看文件上传源代码,Streams.asString() 将在其操作结束时关闭流,因此如果您再次使用相同的流调用它,即顺便从 FileItemStream.openStream() 获得的 InputStream,您将得到这个例外。修复了我的程序,它现在可以按我的预期工作了!

于 2013-05-03T18:22:33.337 回答
-1

当我过去在迭代期间关闭流时,我曾经得到这个。不要关闭流,它工作正常。

于 2012-09-16T15:41:41.603 回答
-1

这是发生在我身上的事情。我收到此错误是因为我添加了

FileItemStream.openStream()

到 Intellij Idea 中的“添加手表”,这就是它向我抛出这个错误的原因。调试时不要添加这个来观看。

于 2015-03-12T21:54:34.763 回答