2009年8月22日土曜日

GAE/Jでのファイルアップロードについて

参考ページ(参考にしたソースコード)
参考ページ(使用できるフレームワークについての情報)
参考ページ(Apache Commons FileUploadについて)から1.2.1.tar.gzをダウンロードし、解凍。
できたフォルダから/commons-fileupload-1.2.1/lib/commons-fileupload-1.2.1.jarを/google/appengine/mydirectory/war/WEB-INF/lib/にコピー。
UploadTest.java
package org.test;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import java.util.logging.Logger;


public class UploadTest extends HttpServlet {
private static final Logger log =
Logger.getLogger(UploadTest.class.getName());

public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try{
ServletFileUpload upload = new ServletFileUpload();
resp.setContentType("image/png");

FileItemIterator iterator = upload.getItemIterator(req);
while (iterator.hasNext()) {
FileItemStream item = iterator.next();
InputStream stream = item.openStream();

if(item.isFormField()){
log.warning("Got a form field: " + item.getFieldName());
} else {
log.warning("Got an uploaded file: " + item.getFieldName() +
", name = " + item.getName());
int len;
byte[] buffer = new byte[8192];
while((len = stream.read(buffer, 0, buffer.length)) != -1){
resp.getOutputStream().write(buffer, 0, len);
}
}
}
}
catch(Exception ex){
throw new ServletException(ex);
}
}
}
upload.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Upload</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
アップロードするファイル : <input type="file" name="imgfile" /><br>
<input type="submit" value="upload" />
</form>
</body>
</html>

0 件のコメント:

コメントを投稿