使用xlsx文件而不保存在本地内存中

时间:2017-12-25 17:39:59

标签: java excel spring-mvc

我在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')

另外一个问题是:从客户端获取此类文件的方法是什么? 我知道我应该将它们作为行存储在我的数据库中(这是我的任务的一部分),但是我应该创建一个临时文件来存储它们,然后将它们加载到数据库中吗?

0 个答案:

没有答案