OfdUpload.jsp 7.2 KB
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="java.io.*" %>
<%@ page import="java.net.*,weaver.general.Util" %>
<%@ include file="/systeminfo/init_wev8.jsp" %>
<%@ page import="weaver.general.BaseBean" %>
<%@ page import="weaver.docs.docs.ImageFileIdUpdate" %>
<%@ page import="java.text.DateFormat" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory" %>
<%@ page import="org.apache.commons.fileupload.FileItem" %>
<%@ page import="weaver.odoc.ofd.util.OFDCommonUtil" %>
<%@ page import="weaver.system.SystemComInfo" %>
<%@ page import="weaver.file.FileUpload" %>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItem" %>
<%@ page import="org.apache.commons.io.FileUtils" %>
<%@ page import="weaver.conn.RecordSet" %>
<%@ page import="weaver.docs.docs.DocImageManager" %>
<%


        new BaseBean().writeLog("UploadServlet ------ start ");
     ImageFileIdUpdate imageFileIdUpdate = new ImageFileIdUpdate();

    //接受上传的文件的大小4G
    long MAX_FILE_SIZE = 4L * 1024 * 1024 * 1024;
    //缓存大小1M
    int  BUFFER_SIZE = 1 *1024 * 1024;
    DateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd");

        User User  = (User) request.getSession(true).getAttribute("weaver_user@bean");
        new BaseBean().writeLog("UploadServlet ------ User " + User);
        if (user == null) {
            return ;
        }

        int docId= Util.getIntValue(request.getParameter("docId"),-1);
        int imageFileId= Util.getIntValue(request.getParameter("imageFileId"),-1);
        new BaseBean().writeLog("UploadServlet docId="+docId+"###imageFileId="+imageFileId);
        //-------------------将上传文件保存到服务器中的files文件夹begin------------------
        Writer writer = response.getWriter();
        try
        {
            boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        new BaseBean().writeLog("UploadServlet ------ isMultipart " + isMultipart);
            if (!isMultipart)return;

            DiskFileItemFactory factory = new DiskFileItemFactory();
            factory.setSizeThreshold(BUFFER_SIZE);// max memory cache
            // factory.setRepository(yourTempDirectory);
            ServletFileUpload upload = new ServletFileUpload(factory);
            
		java.security.ProtectionDomain pd = ServletFileUpload.class.getProtectionDomain();
        new BaseBean().writeLog("UploadServlet ------ ServletFileUpload jar " + pd.getCodeSource().getLocation());
            //upload.setFileSizeMax(MAX_FILE_SIZE);
            String charset = request.getCharacterEncoding();
            if (charset == null)
                charset = "UTF-8";
            upload.setHeaderEncoding(charset);
            List<FileItem> items = upload.parseRequest(request);
            if ((items == null) || items.isEmpty())
            {
                new BaseBean().writeLog("没有任何文件上传!");
                return;
            }
            FileItem fi = null;
            for (FileItem item : items)
            {
                if (!item.isFormField())
                {
                    fi = item;
                    break;
                }
            }
            String fileRealPath="";
            long fsize=0;
            if (fi != null)
            {
                String name = OFDCommonUtil.getUUID()+".ofd";
                SystemComInfo syscominfo = new SystemComInfo() ;
                String dir = FileUpload.getCreateDir(syscominfo.getFilesystem()) ;
                fileRealPath=dir + File.separator + name;
                File file = new File(dir + File.separator + name);

                new BaseBean().writeLog("上传文件【"+ name + "】将保存到服务器位置" + dir );
                if (fi instanceof DiskFileItem)
                {// 可以快速处理
                    DiskFileItem dfi = (DiskFileItem)fi;
                    if (dfi.isInMemory())
                    {
                        byte[] b = dfi.get();
                        FileUtils.writeByteArrayToFile(file, b);
                    }
                    else
                    {
                        File in = dfi.getStoreLocation();
                        FileUtils.copyFile(in, file);
                    }
                }
                else
                {// 默认方式
                    fi.write(file);
                }
                file.setLastModified(System.currentTimeMillis());
                fsize=file.length();
                writer.write(SystemEnv.getHtmlLabelName(18493, user.getLanguage()) + name + SystemEnv.getHtmlLabelName(25388, user.getLanguage()));
                writer.flush();
            }
            else{
                new BaseBean().writeLog("commons-fileupload- 1.3.1.jar未发现任何上传文件");
            }
            int new_id=0;
            String new_imagefileName=null;
            String new_docFileType=null;
            String new_isextfile=null;
            String new_hasUsedTemplet=null;



            RecordSet rs=new RecordSet();
            rs.executeSql("select id,imagefileName,docFileType,isextfile,hasUsedTemplet from DocImageFile where docId="+docId+" and imageFileId="+imageFileId);
            if(rs.next()){
                new_id= Util.getIntValue(rs.getString("id"),0);
                new_imagefileName= Util.null2String(rs.getString("imagefileName"));
                new_docFileType= Util.null2String(rs.getString("docFileType"));
                new_isextfile= Util.null2String(rs.getString("isextfile"));
                new_hasUsedTemplet= Util.null2String(rs.getString("hasUsedTemplet"));
            }else{
                new BaseBean().writeLog("UploadServlet_doPost  DocImageFile is null");
            }
            int new_imageFileId=imageFileIdUpdate.getImageFileNewId();

            char separator = Util.getSeparator() ;
            String para = "" + new_imageFileId + separator + new_imagefileName
                    + separator
                    + "" + separator + "1" + separator
                    + fileRealPath + separator
                    + "0"+ separator + "0" + separator +fsize ;
            //调用存储过程,插入此上传文件的相关内容到相关的表
            rs.executeProc("ImageFile_Insert", para) ;

            DocImageManager imgManger = new DocImageManager() ;
            imgManger.resetParameter() ;
            imgManger.setDocid(docId) ;
            imgManger.setId(new_id) ;
            imgManger.setImagefileid(new_imageFileId) ;
            imgManger.setImagefilename(new_imagefileName);
            imgManger.setDocfiletype(new_docFileType) ;
            imgManger.setIsextfile(new_isextfile);
            imgManger.setHasUsedTemplet(new_hasUsedTemplet);
            imgManger.AddDocImageInfo() ;
        }
        catch(Exception e)
        {
            new BaseBean().writeLog("commons-fileupload- 1.3.1.jar中写出FileItem.write()发生异常");
            response.sendError(500, e.getMessage());
        }
        //--------------------将上传文件保存到服务器中的files文件夹end------------------
        //TODO 对于实际项目实施 ,上述begin和end间的逻辑 应自行实现。

%>