2009年11月24日 星期二

Google App Engine(GAE) - 檔案上傳

1. GAE的檔案上傳需使用Apache的FileUpload的套件

2. 範例程式如下:
ServletFileUpload upload = new ServletFileUpload();
        FileItemIterator iterator = upload.getItemIterator(request);
        while (iterator.hasNext()) {
            FileItemStream item = iterator.next();
            //判斷是否為一般Form的文字資料,還是檔案
            if (item.isFormField()) {
                if (item.getFieldName().equals("icon.name")) {
                    InputStream i = item.openStream();
                    byte[] b = new byte[i.available()];
                    i.read(b);
                    icon.setName(new String(b));
                }
            } else {
                InputStream i = item.openStream();
                byte[] b = new byte[i.available()];
                i.read(b);
                icon.setFile(new Blob(b));
            }
        }

4 則留言:

  1. 你好 我在/lib放入commons-fileupload-1.2.1.jar!
    但是 import 的時候 一直抓不到 org.apache.commons.fileupload 這個元件
    一直找不出原因 ... 麻煩指點一下 謝謝

    回覆刪除
  2. 不好意思,請問一個遇到的小問題..
    如果我要處理文字的部分,要怎麼存取?
    我用本來的方式(req.getParameter)讀出來都是 null..||

    回覆刪除
  3. Dear 一步登天:
    請確認您的Jar檔是否放在WEB-INF\lib。
    ps. "org.apache.commons.fileupload"應該只是一個package name

    回覆刪除
  4. Dear 紅淚:
    如果你的form的enctype="multipart/form-data"那邊就需要使用我文章內提到的方法
    if (item.getFieldName().equals("parameterName")) {
    InputStream i = item.openStream();
    byte[] b = new byte[i.available()];
    i.read(b);
    icon.setName(new String(b));
    }

    回覆刪除