我能够读取字节并在系统控制台上打印出来。然而,由于 GAE 不支持文件创建,我通过 StackOverflow 搜索并发现我可以写入 GAE blobstore。但我不确定如何去做,因为我是 GAE 的新手。
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/html;charset=UTF-8");
// resp.setContentType("text/plain");
PrintWriter out = resp.getWriter();
try {
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = upload.getItemIterator(req);
// out.println("<html><body>");
while (iterator.hasNext()) {
FileItemStream item = iterator.next();
InputStream in = item.openStream();
if (item.isFormField()) {
out.println("<br />Got a form field: " + item.getFieldName());
} else {
out.println("<br />Got an uploaded file: " + item.getFieldName() + ", name = " + item.getName());
ZipInputStream zis = new ZipInputStream(
new BufferedInputStream( in ));
ZipEntry entry;
// Read each entry from the ZipInputStream until no
// more entry found indicated by a null return value
// of the getNextEntry() method.
byte[] buf = new byte[10244];
int len;
while ((entry = zis.getNextEntry()) != null) {
out.println("Unzipping: " + entry.getName());
FileService fileService = FileServiceFactory.getFileService();
AppEngineFile file = fileService.createNewBlobFile("text/plain");
boolean lock = false;
FileWriteChannel writeChannel = fileService.openWriteChannel(file, lock);
PrintWriter outter = new PrintWriter(Channels.newWriter(writeChannel, "UTF8"));
StringBuilder sb = new StringBuilder(buf.length);
if (entry.getName().equalsIgnoreCase("booking.csv")) {
int count = 0;
while ((len = zis.read(buf, 0, buf.length)) != -1) {
//I'm trying to write byte[] into blobstore instead of printing using
//System.out.write(buf, 0, len);
}
有什么建议吗?