`
myrl1023
  • 浏览: 35057 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

jsp文件上传

    博客分类:
  • web
阅读更多
选把上传文件的插件cos下下来;
upload.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传前台控制检测程序 v0.6</title>
<style>
body,td{font-size:12px;}
</style>
<script language=javascript>


var ImgObj=new Image();      //建立一个图像对象

var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"//全部图片格式类型
var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg,FileMsg,HasCheked,IsImg//全局变量图片相关属性

//以下为限制变量
var AllowExt=".jpg|.gif|.doc|.txt|"  //允许上传的文件类型 ?为无限制 每个扩展名后边要加一个"|" 小写字母表示
//var AllowExt=0
var AllowImgFileSize=70;    //允许上传图片文件的大小 0为无限制  单位:KB
var AllowImgWidth=500;      //允许上传的图片的宽度 ?为无限制 单位:px(像素)
var AllowImgHeight=500;      //允许上传的图片的高度 ?为无限制 单位:px(像素)

HasChecked=false;

function CheckProperty(obj)    //检测图像属性
{
  FileObj=obj;
  if(ErrMsg!="")      //检测是否为正确的图像文件 返回出错信息并重置
  {
    ShowMsg(ErrMsg,false);
    return false;      //返回
  }

  if(ImgObj.readyState!="complete")  //如果图像是未加载完成进行循环检测
  {
    setTimeout("CheckProperty(FileObj)",500);
    return false;
  }

  ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;//取得图片文件的大小
  ImgWidth=ImgObj.width      //取得图片的宽度
  ImgHeight=ImgObj.height;    //取得图片的高度
  FileMsg="\n图片大小:"+ImgWidth+"*"+ImgHeight+"px";
  FileMsg=FileMsg+"\n图片文件大小:"+ImgFileSize+"Kb";
  FileMsg=FileMsg+"\n图片文件扩展名:"+FileExt;

  if(AllowImgWidth!=0&&AllowImgWidth<ImgWidth)
    ErrMsg=ErrMsg+"\n图片宽度超过限制。请上传宽度小于"+AllowImgWidth+"px的文件,当前图片宽度为"+ImgWidth+"px";

  if(AllowImgHeight!=0&&AllowImgHeight<ImgHeight)
    ErrMsg=ErrMsg+"\n图片高度超过限制。请上传高度小于"+AllowImgHeight+"px的文件,当前图片高度为"+ImgHeight+"px";

  if(AllowImgFileSize!=0&&AllowImgFileSize<ImgFileSize)
    ErrMsg=ErrMsg+"\n图片文件大小超过限制。请上传小于"+AllowImgFileSize+"KB的文件,当前文件大小为"+ImgFileSize+"KB";

  if(ErrMsg!="")
    ShowMsg(ErrMsg,false);
  else
    ShowMsg(FileMsg,true);
}

ImgObj.onerror=function(){ErrMsg='\n图片格式不正确或者图片已损坏!'}

function ShowMsg(msg,tf)  //显示提示信息 tf=true 显示文件信息 tf=false 显示错误信息 msg-信息内容
{
  msg=msg.replace("\n","<li>");
  msg=msg.replace(/\n/gi,"<li>");
  if(!tf)
  {
    document.all.UploadButton.disabled=true;
    FileObj.outerHTML=FileObj.outerHTML;
    MsgList.innerHTML=msg;
    HasChecked=false;
  }
  else
  {
    document.all.UploadButton.disabled=false;
    if(IsImg)
      PreviewImg.innerHTML="<img src='"+ImgObj.src+"' width='60' height='60'>"
    else
      PreviewImg.innerHTML="非图片文件";
    MsgList.innerHTML=msg;
    HasChecked=true;
  }
}

function CheckExt(obj)
{
  ErrMsg="";
  FileMsg="";
  FileObj=obj;
  IsImg=false;
  HasChecked=false;
  PreviewImg.innerHTML="预览区";
  if(obj.value=="")return false;
  MsgList.innerHTML="文件信息处理中...";
  document.all.UploadButton.disabled=true;
  FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();
  if(AllowExt!=0&&AllowExt.indexOf(FileExt+"|")==-1)  //判断文件类型是否允许上传
  {
    ErrMsg="\n该文件类型不允许上传。请上传 "+AllowExt+" 类型的文件,当前文件类型为"+FileExt;
    ShowMsg(ErrMsg,false);
    return false;
  }

  if(AllImgExt.indexOf(FileExt+"|")!=-1)    //如果图片文件,则进行图片信息处理
  {
    IsImg=true;
    ImgObj.src=obj.value;
    CheckProperty(obj);
    return false;
  }
  else
  {
    FileMsg="\n文件扩展名:"+FileExt;
    ShowMsg(FileMsg,true);
  }
 
}

function SwitchUpType(tf)
{
    if(tf)
     str='<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;">'
    else
     str='<input type="text" name="file1" onblur="CheckExt(this)" style="width:180px;">'
    document.all.file1.outerHTML=str;
    document.all.UploadButton.disabled=true;
    MsgList.innerHTML="";
}

</script>
</head>
<body>
<form enctype="multipart/form-data" method="POST" action="./upload.jsp?folderName=uploadImage&relativePath=../../" onsubmit="return HasChecked;">
<fieldset style="width: 400px; height: 60;padding:2px;">
<legend><font color="#FF0000">图片来源</font></legend>
<input type="radio" name="radio1" checked onclick="SwitchUpType(true);">本地<input type="radio" name="radio1" onclick="SwitchUpType(false);">远程:<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;"> <input type="submit" id="UploadButton" value="开始上传" disabled>
 <br>图片描述:&nbsp;<input type="text" name="imgdes" id="imgdes" size="40" >
<div style="border:1 solid #808080;background:#E0E0E0;width100%;height:20px;color:#606060;padding:5px;">
<table border="0"><tr><td width="60" id="PreviewImg">预览区</td><td id="MsgList" valign="top"></td></tr></table>
</div>
</fieldset>
</form>
</body>
</html>



upload.jsp
<%@ page contentType="text/html; charset=gbk" language="java" errorPage="" %>
<%@ page language="java" import="java.io.PrintWriter"%>
<%@ page language="java" import="java.io.*"%>
<%@ page language="java" import="java.util.UUID"%>
<%@ page language="java" import="java.util.Enumeration"%>
<%@ page language="java" import="com.oreilly.servlet.MultipartRequest"%>
<%@ page language="java" import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@ page language="java" import="com.oreilly.servlet.multipart.FileRenamePolicy"%>

<%
    response.setHeader("Cache-Control", "no-cache");
response.setCharacterEncoding("gb2312");
PrintWriter xmlout = response.getWriter();
String uuid = UUID.randomUUID().toString();
//文件的fileURL
String fileURL = "";
// 上传文件名 
String fileName = null;
//取得文件描述 
String fileDesName = "";
StringBuffer sb = new StringBuffer();
String result = "";

try
{
   //得到此源文件的目录 
   String realPath = getServletContext().getRealPath("");
   String contentPath = request.getContextPath();
   String requestURL = request.getRequestURL().toString();
   String realURL = requestURL.split(contentPath)[0] + contentPath;
   //上传文件存放的文件夹名称,一律放在根目录下的文件夹里面即folderName/
    String folderName = request.getParameter("folderName");
   //根据不同层级../../的路径不同
   String relativePath = request.getParameter("relativePath");
   //文件的相对路径
   String comparafileName = "";
  
   // 将上传文件存放在saveDirectory 
    String saveDirectory = realPath + "/" + folderName;
   System.out.println("saveDirectory= " + saveDirectory);
   File uploadPath = new File(saveDirectory);
  
   if (!uploadPath.exists())
   {
    uploadPath.mkdir();
   }

   // 上传文件的大小限制在10 MB 
   int maxPostSize = 10 * 1024 * 1024;
  
     //实现将上传文件更名,以防同名覆盖和同时上传两个文件名相同的文件,自动在文件名后面加1(在1~9999范围内)
    FileRenamePolicy policy =(FileRenamePolicy)new DefaultFileRenamePolicy(); 
   // 上传文件
    MultipartRequest multi = new MultipartRequest(request,saveDirectory, maxPostSize, "gb2312",policy);
   StringBuffer filenametemp = new StringBuffer();
    filenametemp.append(uuid);
    //在iidd后面加一下划线"-"以便和文件名称区分出来
    filenametemp.append("-");
   //取得文件描述 
    fileDesName = multi.getParameter("imgdes");
    //System.out.println("文件描述:"+ fileDesName);
   // 取得所有上传文件名称
   Enumeration filesname = multi.getFileNames();
  
   while (filesname.hasMoreElements()) 
   {
    String name = (String) filesname.nextElement();    
    //文件上传的完整路径
    File f = multi.getFile(name);
    //文件名称
    fileName = multi.getFilesystemName(name);
   
    if (fileName != null) 
    {
     String oldFilename=fileName;
     int idx=oldFilename.lastIndexOf("."); 
     String extention=oldFilename.substring(idx);
     //取文件名 
     String newFilename=oldFilename.substring(0,idx);
     //得到不重复的文件名,用iidd加文件名
     String sServerFileName = (String)filenametemp.toString();
     sServerFileName =sServerFileName+newFilename+extention;
     File sServerFile= new File(saveDirectory+"\\" + sServerFileName);
     f.renameTo(sServerFile);
     String FileName = sServerFile.getName();
     //放在上两级目录下(根目录的文件夹下)
     //String comparafileName = "../../" + folderName + "/" + FileName;
     comparafileName = relativePath + folderName + "/" + FileName;
     System.out.print("文件的相对路径:"+comparafileName);
     fileURL = realURL + "/" + folderName + "/" + FileName;
    
    }
   }
  
   sb.append("<html><body>");
   sb.append("<input id = \"UploadIsSucces\" type=\"hidden\" value=\"1\" />");
   sb.append("图片已经上传成功!");
   sb.append("<br /> 图片描述:");
   sb.append(fileDesName);
   sb.append("<br />图片url:");
   sb.append(fileURL);
   String img = "<br /><img src='" + fileURL + "' />";
   String urll = "http://localhost:8080/pictureupload/uploadImage/877700ca-bac3-4c07-92d5-0458010865e4-aa.jpg";
   String img2="<br/><a herf=\"http://localhost:8080/pictureupload/upload.html\"> <img src='"+urll+"'/></a>";
   sb.append(img);
   sb.append(img2);
   sb.append("</body></html>");
   result = sb.toString();
   //System.out.println(rs);
}
catch(Exception e)
{
     System.out.println("message=" + e.getMessage());
   //Posted content length of 42654262 exceeds limit of 10485760
   String message = e.getMessage();
  
   if(message.indexOf("Posted content length of") !=-1)
   {
    String content = message.split("length of ")[1].split(" exceeds")[0];
    int ct = Integer.parseInt(content);
    String limit = message.split("limit of ")[1];
    int lt = Integer.parseInt(limit);
   
    result = "对不起,你上传的图片大小为" + ct/(1024*1024) + "MB,超过了最大限制" + lt/(1024*1024) + "MB" ;
   }
   else
   {
    result = "上传失败";
   }
  
   e.printStackTrace();
}


try
{
   xmlout.write(result);
}
catch (Exception e)
{
   e.printStackTrace();
}
finally
{
   xmlout.flush();
   xmlout.close();
}
%>


  • cos.jar (47.4 KB)
  • 下载次数: 152
分享到:
评论
1 楼 alan_zyy 2010-04-12  
学习了

相关推荐

    JSP文件上传代码文件上传代码

    JSP文件上传代码JSP文件上传代码文件上传代码

    JSP文件上传 支持进度条显示.rar

    JSP文件上传 支持进度条显示,支持单个文件100M上传,JSP环境下的AJAX WEB上传程序,可一次上传多个文件,带进度条显示,上传过程中,若用户取消上传,则已经上传的文件均被删除。

    jsp文件上传下载jar包

    jsp文件上传下载jar包。jsp文件上传下载jar包

    jsp文件上传类 jsp文件上传类

    包括文件上传的几个类文件。 jsp文件上传类

    JSP文件上传带进度条(很灵巧的方式)

    JSP文件上传带进度条(很灵巧的方式)JSP文件上传带进度条(很灵巧的方式)JSP文件上传带进度条(很灵巧的方式)JSP文件上传带进度条(很灵巧的方式)

    JSP文件上传功能(struts)

    JSP文件上传功能,用于实现Struts上传功能

    jsp文件上传源码

    jsp文件上传源码,解压之后,导入myeclipse中直接使用。

    JSP文件上传进度条

    JSP文件上传带进度,开发过程中还感觉还蛮适用的,分享下

    jsp文件上传jar包

    jsp文件上传所需要的jar包。(凑齐100个字节)(凑齐100个字节)(凑齐100个字节)(凑齐100个字节)(凑齐100个字节)

    jsp 文件 上传 组件

    jsp 文件 上传 的..组件 大家可以下下去看看

    jsp文件上传所需common包

    jsp文件上传所需common包

    JSP文件上传插件(潇湘多文件上传).rar

    JSP文件上传插件(潇湘多文件上传),压缩包内包括了潇湘文件上传组件、实例、文档等。这是一款大家都比较喜欢用的JSP文件上传组件,支持图片和文件同时上传,可批量上传,支持多种上传自定义功能,扩展名、上传文件大...

    JSP无组件文件上传

    在网络上找到的,纯JSP实现的文件上传程序,支持多文件的上传,例子是多文件的上传,稍微修改就可以变成单文件的上传或者更多文件的上传,控制成需要扩展名的文件上传,指定大小的文件上传等。程序目前上传文件存储...

    jsp文件上传下载

    这是 ,jsp文件上传下载 源代码。可以下载当做你学习的参考,本人建议不要直接拷贝代码。要看懂代码,这样才能吸收。

    jsp文件上传包.zip

    jsp文件上传包,解决中文乱码问题,很好用,帮助者解决JSP文件上传乱码问题,可以放心的下载 。

    Jsp文件上传下载

    本示例向用户演示如何通过smartupload上传下载文件。此处用的是smartupload的新版本1.2,采用一种新的 方式来完成文件的上传。

    jspsmartupload实现文件上传与下载

    1,只需要将文件夹upload拷在...3,有jsp文件上传与下载攻略是讲文件上传与下载的各种类中的函数含义的 4,主要包括完整的 jspsmartupload上传与下载,还有jspsmartupload的完整包,并且包括包中各种上传与下载的解释

    struts2+jsp 文件上传

    struts2+jsp 文件上传,供大家一起共同分享学习。

    简单JSP文件上传源代码smartupload

    简单 JSP 文件上传 源代码 smartupload 简单 JSP 文件上传 源代码 smartupload 简单 JSP 文件上传 源代码 smartupload 简单 JSP 文件上传 源代码 smartupload

Global site tag (gtag.js) - Google Analytics