首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

下传本地文件到服务器下

2012-10-08 
上传本地文件到服务器上上传文件到服务器上的方法: 1:使用commons-fileupload代码如下:boolean isMultipar

上传本地文件到服务器上
上传文件到服务器上的方法:
1:使用commons-fileupload代码如下:

   boolean isMultipart = ServletFileUpload.isMultipartContent(request);                        if (isMultipart) {                DiskFileItemFactory factory = new DiskFileItemFactory();                factory.setSizeThreshold(10*1024); // 设置上传缓冲大小(10K)                factory.setRepository(uploadTempDir); // 设置上传临时存放文件夹(文件尺寸大于上传缓存容量)                ServletFileUpload upload = new ServletFileUpload(factory);                upload.setFileSizeMax(20*1024*1024); // 设置上传文件允许的最大尺寸(20M)                                List items = null;                // 解析上传请求并判断是否超出允许上传的最大尺寸                try {                    items = upload.parseRequest(request);                } catch (FileSizeLimitExceededException e) { // 如果超出允许上传的最大尺寸                e.printStackTrace();        logger.error(ExceptionUtil.getStackTraceMessage(e));        uploadResult.put("success", new Boolean(false));                    uploadResult.put("errorMessage", "文件大小超过20MB");                    return uploadResult;                }                                Iterator iter = items.iterator();                while (iter.hasNext()) {                    FileItem item = (FileItem) iter.next();                    if (!item.isFormField()) {                    originalFileName = item.getName();                    // 如果文件域为空或者文件大小为零则进入下次循环    if (StringUtils.isBlank(originalFileName) || item.getSize() == 0) {    continue;    }                        // 获取原始文件名称                        originalFileName = StringUtils.trimToEmpty(StringUtils.substring(originalFileName, StringUtils.lastIndexOf(originalFileName, "\") + 1));                        // 获取原始文件后缀                        fileExt = StringUtils.lowerCase(StringUtils.trimToEmpty(StringUtils.substring(originalFileName, StringUtils.lastIndexOf(originalFileName, "."))));                        // 生成文件在服务器上实际存储名称                        realFileNameAtServer = DateUtil.getDate("yyyyMMddHHmmssSSS") + fileExt;                        // 生成文件在服务器上实际存储位置                        realFilePath = StringUtils.trimToEmpty(realFilePath) + "/" + realFileNameAtServer;                                                                        // 读取上传文件并保存在服务器指定目录中                        int readbyte = -1; // 每次实际读入的字节数                        byte[] buff = new byte[1024]; // 存储每次读取的数据                        BufferedInputStream bis = null; // 缓存输入流                        BufferedOutputStream bos = null; // 缓存输出流                        try {                        bis = new BufferedInputStream(item.getInputStream(), buff.length);                        bos = new BufferedOutputStream(new FileOutputStream(new File(realFilePath)));                while((readbyte = bis.read(buff, 0, buff.length)) > -1) {                bos.write(buff, 0, readbyte);                }                        bos.flush();                        } catch(IOException ioe) {                        ioe.printStackTrace();                logger.error(ExceptionUtil.getStackTraceMessage(ioe));                uploadResult.put("success", new Boolean(false));                            uploadResult.put("errorMessage", "上传文件失败");                            return uploadResult;                        } catch(Exception e) {                        e.printStackTrace();                logger.error(ExceptionUtil.getStackTraceMessage(e));                uploadResult.put("success", new Boolean(false));                            uploadResult.put("errorMessage", "上传文件失败");                            return uploadResult;                        } finally {                        try {                        // 关闭输出流                        if(bos != null) {                        bos.close();                        }                        // 关闭输入流                        if(bis != null) {                        bis.close();                        }                        } catch(IOException ioe) {                        ioe.printStackTrace();                    logger.error(ExceptionUtil.getStackTraceMessage(ioe));                            }                        }                                                                    }                }            }

热点排行