您的位置:首页 > 编程语言

web 项目中的文件上传服务器的代码实现

2008-09-07 20:57 525 查看

java web 中文件上传的实现

1,view层
<%@ page language="java" import="java.util.*"
        contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<html>
        <body>
                <form action="servlet/UpDownLoadFile" enctype="multipart/form-data"
                        method="post">
                        <input type="text" name="username" />
                        <br />
                        <input type="file" name="myfile" />
                        <br />
                        <input type="file" name="myfile" />
                        <br />
                        <input type="submit" />
                </form>
                <br />
        </body>
</html>
2,文件上传类File_upload
package file_upload;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.RequestContext;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;

public class File_upload {

        private String dir_name = "BooksImage";

        public HashMap begin_upload(HttpServletRequest request,
                        HttpServletResponse response) {
                HashMap param_hm = new HashMap();
                try {
                        // jsp file encode utf-8 must
                        request.setCharacterEncoding("utf-8");
                        RequestContext requestContext = new ServletRequestContext(request);
                        if (FileUpload.isMultipartContent(requestContext)) {
                                DiskFileItemFactory factory = new DiskFileItemFactory();
                                File temp_file = new File(request.getRealPath("") + "//"
                                                + getDir_name() + "//");
                                temp_file.mkdir();
                                factory.setRepository(temp_file);
                                ServletFileUpload upload = new ServletFileUpload(factory);
                                upload.setHeaderEncoding("utf-8");
                                upload.setSizeMax(-1);
                                List items = new ArrayList();
                                items = upload.parseRequest(request);
                                Iterator it = items.iterator();
                                while (it.hasNext()) {
                                        FileItem fileItem = (FileItem) it.next();
                                        if (fileItem.isFormField()) {
                                                param_hm.put(fileItem.getFieldName(), new String(
                                                                fileItem.getString().getBytes("iso8859-1"),
                                                                "utf-8"));
                                        } else {
                                                if (fileItem.getName() != null
                                                                && fileItem.getSize() != 0) {
                                                        File fullFile = new File(fileItem.getName());
                                                        File newFile = new File(request.getRealPath("")
                                                                        + "//" + getDir_name() + "//"
                                                                        + fullFile.getName());
                                                        fileItem.write(newFile);
                                                } else {
                                                        System.out.println("文件没有选择 或 文件内容为空");
                                                }
                                        }
                                }
                        }
                } catch (UnsupportedEncodingException e2) {
                        // TODO Auto-generated catch block
                        e2.printStackTrace();
                } catch (FileUploadException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

                return param_hm;
        }

        public void setDir_name(String dir_name) {
                this.dir_name = dir_name;
        }

        public String getDir_name() {
                return dir_name;
        }
}
备注:private String dir_name = "BooksImage";此处成员变量,代表你上传时将在服务器你的项目目录:WEB-INF吓创建一个以此变量名称一样的文件夹作为用户上传目录,如果此目录存在,不会创建,直接将文件写入!是不是使用啊!

使用这个类需要file_upload.jar包:下载地址:http://download.csdn.net/source/337184
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息