我在POST请求中发送.xlsx文件。在我的JAVA代码中,我想读取这些文件而不保存在本地内存中。我怎么能这样做,我试图从获得的String对象创建InputStream,但它抛出异常。
java.io.IOException: Failed to read zip entry source
我的jsp按钮看起来像那样
<input type="file" id="file" name="file" accept=".xls,.xlsx" />
<button ng-click="ctrl.add()">Add</button>
我的控制器是
@RequestMapping(value = "/file/", method = RequestMethod.POST)
public ResponseEntity<Void> createUser(@RequestBody String s, UriComponentsBuilder ucBuilder) throws IOException {
InputStream inputStream = new ByteArrayInputStream(s.getBytes());
Workbook workbook = new XSSFWorkbook(inputStream); // here is Exception
//... some working code
}
我是Spring新手并使用.xlsx文件,对不起,如果我的问题非常愚蠢。
我的角度片段,在哪里发送部分
function createFile(file) {
var deferred = $q.defer();
$http.post(REST_SERVICE_URI1, file)
.then(
function (response) {
deferred.resolve(response.data);
},
function(errResponse){
console.error('Error while creating File');
deferred.reject(errResponse);
}
);
return deferred.promise;
}
(作为扩展说明) 如果我尝试放置InputStream而不是String我已经
at [Source: java.io.PushbackInputStream@4fbc26a; line: 1, column: 14]; nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'PK ': was expecting ('true', 'false' or 'null')
另外一个问题是:从客户端获取此类文件的方法是什么? 我知道我应该将它们作为行存储在我的数据库中(这是我的任务的一部分),但是我应该创建一个临时文件来存储它们,然后将它们加载到数据库中吗?