首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用outputstream上传时文件损坏

使用outputstream上传时文件损坏
EN

Stack Overflow用户
提问于 2018-05-30 14:40:18
回答 1查看 1.3K关注 0票数 0

每次当我上传包含部分数据的excel时,上传的文件都会损坏,并且我无法在aspose工作簿中使用这个上传的文件(在某些情况下,它也可以工作,我不知道为什么)。即使我打开这段时间,excel也会显示损坏的文件消息。这是代码片段

代码语言:javascript
复制
InputStream stream = file.getInputStream();


OutputStream os = new FileOutputStream("path_to_xlsFile.xls");
BufferedOutputStream bos = new BufferedOutputStream(os);
int bytesRead;
byte[] buffer = new byte[8192];

while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
       bos.write(buffer, 0, bytesRead);
 }
bos.flush();
bos.close();
os.close();
stream.close();

当我通过aspose库打开工作簿时,对于相同的上传文件,我得到的错误是

代码语言:javascript
复制
java.lang.IllegalStateException: The FAT in the structured storage document seems to be corrupted.
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.<init>(Unknown Source)
at com.aspose.cells.Workbook.a(Unknown Source)
at com.aspose.cells.Workbook.open(Unknown Source)

代码语言:javascript
复制
java.lang.IllegalStateException: The structured storage seems to be corrupt.
at com.aspose.cells.mm.<init>(Unknown Source)
at com.aspose.cells.py.c(Unknown Source)
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.<init>(Unknown Source)
at com.aspose.cells.Workbook.a(Unknown Source)
at com.aspose.cells.Workbook.open(Unknown Source)

代码语言:javascript
复制
java.lang.IllegalArgumentException: length
at com.aspose.cells.b.a.d.h.b(Unknown Source)
at com.aspose.cells.py.c(Unknown Source)
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.<init>(Unknown Source)
at com.aspose.cells.Workbook.a(Unknown Source)
at com.aspose.cells.Workbook.open(Unknown Source)

编辑

如果我使用file.transferTo(outputFile),那么对于一些文件,我也会得到这个异常

代码语言:javascript
复制
java.lang.IllegalStateException: The FAT in the structured storage document seems to be corrupted.
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.<init>(Unknown Source)
at com.aspose.cells.Workbook.a(Unknown Source)
at com.aspose.cells.Workbook.open(Unknown Source)
EN

回答 1

Stack Overflow用户

发布于 2018-05-31 02:43:58

嗯,您似乎从模板XLS文件中获得了某些数据,这可能会否定/破坏整个Excel文件格式规范或标准。因此,字节数组(或流)中提取的文件将不遵循MS Excel文件格式结构或规则。简而言之,文件将被损坏,MS Excel在打开文件时也会显示错误消息,正如您所提到的。对于Aspose.Cells API来说,这可能不是问题。如果运行良好,您可以简单地尝试以下示例代码段(两个中的任何一个)吗:例如,示例代码:

代码语言:javascript
复制
1)
Path path = Paths.get("path_to_xlsFile.xls"); 
ByteArrayInputStream stream = new ByteArrayInputStream(Files.readAllBytes(path)); 

Workbook workbook = new Workbook(stream); 
.........

2)
String testFileTemplate = "path_to_xlsFile.xls"; 
FileInputStream fis = new FileInputStream(new File(testFileTemplate)); 
Workbook workbook = new Workbook(fis); 

我在Aspose担任支持开发人员/布道者。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50597892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档