ファイルをアップロードしてみよう!

※サンプルでは、Meteorを使用しています。

アップロードしたファイルの情報を下記のHTMLに表示します。

upload.html

<html>
<head>
<title>ファイルをアップロードしてみよう!</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="" enctype="multipart/form-data">
<br>
<input type="file" name="file">
<br>
<br>
<input type="submit" name="submit" value="送信">
</form>
<br>
<table width="688" border="1">
<tr>
<td width="123">ファイルパス</td>
<td width="549">
<!-- @quark id="file_path" --> <!-- /@quark -->
</td>
</tr>
<tr>
<td width="123">ファイル名</td>
<td width="549">
<!-- @quark id="file_name" --> <!-- /@quark -->
</td>
</tr>
<tr>
<td width="123">MIMEタイプ</td>
<td width="549">
<!-- @quark id="mime_type" --> <!-- /@quark -->
</td>
</tr>
</table>
</body>
</html>


URを使用して作成した場合、以下のようなコードになります。

UploadServlet.java

//標準API

import java.io.*;
import java.util.HashMap;

//ServletAPI
import javax.servlet.*;
import javax.servlet.http.*;

//Kuro API
import jp.kuro.meteor.*;
import jp.kuro.meteor.printer.HttpPrinter;
import jp.kuro.ur.*;

public class UploadServlet extends HttpServlet {
    ParserFactory pf;
    String path2;
    Request anl;

    public void init(ServletConfig sConf) throws ServletException {
        ServletContext sc = sConf.getServletContext();

        String path = sc.getRealPath("/WEB-INF/html/");
        path2 = sc.getRealPath("/WEB-INF/tmp/_");

        pf = new ParserFactory(path);
        pf.parser(Parser.HTML, "upload.html", "Shift_JIS");

        anl = new Request();
    }

    public void doGet(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {
        doPost(req, res);
    }

    public void doPost(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {
        Parser xt = pf.parser("upload");

        anl.setCharacterEncoding("Shift_JIS");

        HashMap query = anl.analyze(req).getQuery();

        if (query.get("submit") != null && !query.get("submit").equals("")) {

            FileStorage fs = (FileStorage) query.get("file");

            Element tag1 = xt.cxTag("file_path");
            Element tag2 = xt.cxTag("file_name");
            Element tag3 = xt.cxTag("mime_type");


            String path = fs.getUploadPath();
            if (path != null) {
                tag1.content(path);
            } else {
                tag1.content(" ");
            }

            tag2.content(fs.getUploadName());
            tag3.content(fs.getMimeType());

            byte[] bytes = fs.getData();

            if (bytes.length > 0) {
                FileOutputStream fos = new FileOutputStream(path2 + fs.getUploadName());
                DataOutputStream dos = new DataOutputStream(fos);
                BufferedOutputStream bos = new BufferedOutputStream(dos);

                bos.write(bytes);

                bos.close();
                dos.close();
                fos.close();
            }

        }

        //反映する
        xt.flush();

        HttpPrinter prt = new HttpPrinter(res);
        prt.print(xt);

    }
}




(C)Yasumasa Ashida