我以前使用过 fileUpload 将文件上传到我们的一台服务器上,但现在我必须做一些不同的事情。正在上传的文件永远不会被写入磁盘,而是应该逐行读取并插入到数据库中 - 每行代表一张优惠券/折扣 - 这是一个内部内容管理系统,因此文件永远不会被大于 10 行左右,最多 100 行。
我尝试调整我的工作代码以仅使用 BufferedReader 并在读入时对其进行处理,但我不断收到 NullPointerException (尽管缺少堆栈跟踪,因此我必须使用 log4j 才能获得正确的输出)。有没有人在网上看到过一个例子或者知道我做错了什么?
我的代码片段:
BufferedInputStream in = null;
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<FileItem> items = upload.parseRequest(request);
String enc = request.getCharacterEncoding();
for (FileItem item : items) {
if (item.isFormField()) {
if ("code".equalsIgnoreCase(fileItem.getFieldName()))
this.code = fileItem.getString(enc);
... // set these to local variables
} else {
in = new BufferedInputStream(new FileInputStream(item.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
insert2DB(line);
}
}
}
我需要做其他事情还是必须先将其写入磁盘然后再读取?