package application;
import java.io.*;
import java.util.Hashtable;
import java.util.Properties;
import javax.mail.BodyPart;
import javax.mail.Session;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
public class upload_app extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
private static Logger logger = Logger.getLogger(upload_app.class);
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
// doGet、書いてやらねー(w
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
logger.info("upload_app start");
request.setCharacterEncoding("UTF-8");
// ユーザID(仮)
String strUSERID = "Set_USER";
try {
// ファイルのアップロード
ServletInputStream is=request.getInputStream();
ByteArrayOutputStream baos=new ByteArrayOutputStream();
PrintStream ps=new PrintStream(baos,true);
ps.print("Content-Type: " + request.getContentType());
ps.println(System.getProperty("line.separator"));
// リクエストデータをバイナリとして読み込み、JavaMailの機能を利用して本体部分を取得。
int i;
while((i=is.read())!=-1){baos.write(i);}
Properties prop=System.getProperties();
Session sess=Session.getDefaultInstance(prop);
MimeMessage msg=new MimeMessage(sess,new ByteArrayInputStream(baos.toByteArray()));
MimeMultipart mm = (MimeMultipart)msg.getContent();
int mmcount = mm.getCount();
for(int l=0;l
{
BodyPart body = mm.getBodyPart(l);
// 取得したバイナリデータからファイル名の部分を取り出す。
// ヘッダ部分はContent-Disposition: ... filename="...upload.dat"のような形式になっている
String[] ary=body.getHeader("Content-Disposition");
//form-data; name="userid"
//form-data; name="fl"; filename="C:\Documents and Settings\ito\ãã¹ã¯ããã\æ°è¦ãããããã ã¤ã¡ã¼ã¸.bmp"
Hashtable ht = new Hashtable();
Hashtable ht_hedparm = new Hashtable();
for(int j=0;j
{
String[] ary2 = ary[j].split(";");
for(int k=0;k
{
String[] parms = ary2[k].split("=");
ht.put(parms[0].trim(), parms.length==1?"":parms[1].trim());
}
}
if(ht.containsKey("filename"))
{
// ファイル名のあるBodyPartも名前を持っている
//String n = ht.get("name").toString();
// ファイル名取得(文字化け対応済utf-8で来るものと仮定 Win-tomcatで確認)
//String filename_fullpath = new String(ht.get("filename").toString().getBytes("iso-8859-1"), "utf-8");
//String filename = filename_fullpath.substring(filename_fullpath.lastIndexOf('\\')+1, filename_fullpath.length());
// 取得したデータ本体部分を、取得したファイル名で/フォルダに格納し、アップロード結果を出力
InputStream stream=body.getInputStream();
File fl=new File("C:\\test.bin");//ht.get("filename").toString()
FileOutputStream fos=new FileOutputStream(fl);
while((i=stream.read())!=-1){fos.write(i);}
fos.close();
}
else
{
// ファイル名が無いBodyPartから、通常のパラメータを取得
//String n = ht.get("name").toString();
InputStream stream=body.getInputStream();
ByteArrayOutputStream bao = new ByteArrayOutputStream();
while((i=stream.read())!=-1){bao.write(i);}
bao.close();
String parmval = bao.toString("utf-8");
ht_hedparm.put(ht.get("name").toString(), parmval);
//logger.info(ht.get("name").toString() + ":" + parmval);
}
}
} catch (Exception ex) {
// ログ出力
logger.fatal("USERID:" + strUSERID,ex);
}
}
}
2008年3月19日水曜日
アップロード最終(?)版
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿