`
myrl1023
  • 浏览: 35975 次
  • 性别: 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文件上传 支持进度条显示.rar

    "JSP文件上传 支持进度条显示"这个项目是针对JSP环境设计的一个AJAX Web上传程序,它允许用户上传大文件(如单个文件100M),并具有文件上传进度条的可视化功能。以下将详细解析这个项目的知识点: 1. **JSP(Java...

    jsp文件上传源码

    综上所述,"jsp文件上传源码"提供了一个基础的JSP文件上传教程,通过这个项目,开发者可以学习到如何在Java Web环境中处理文件上传,理解`multipart/form-data`编码的工作原理,以及如何使用Servlet和Apache Commons...

    Jsp文件上传下载

    总结来说,JSP文件上传下载是通过SmartUpload库实现的,它简化了文件操作的复杂性,使得开发者能更专注于业务逻辑。通过理解和实践SmartUpload的用法,你将能够为你的Web应用添加这一关键功能。同时,理解文件上传...

    JSP文件上传进度条

    因此,引入“JSP文件上传进度条”技术可以显著改善这种情况,为用户提供实时的上传进度,增强交互体验。这个技术主要涉及到前端与后端的协同工作,下面我们将详细探讨这一主题。 首先,我们需要理解JSP(JavaServer...

    jsp文件上传下载jar包

    以下是关于JSP文件上传下载以及所用到的JAR包的详细解释: 1. 文件上传: 在JSP中处理文件上传,我们需要使用Apache Commons FileUpload库,具体为`commons-fileupload-1.2.jar`。这个库提供了处理HTTP多部分请求...

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

    以上是关于JSP文件上传的基本概念和实现步骤。在实际开发中,应结合具体需求,如文件存储策略、权限控制等,进行更深入的设计和实现。同时,随着技术的发展,现代Web框架如Spring Boot提供了更高级别的抽象,简化了...

    jsp文件上传jar包

    总结来说,"jsp文件上传jar包"涉及到的主要知识点包括:JSP文件上传的原理、Servlet API的使用、Apache Commons FileUpload库的作用及使用方法,以及如何在JSP页面和服务器端处理文件上传请求。正确引入和使用这些...

    关于JSP文件上传下载源代码

    这个项目标题“关于JSP文件上传下载源代码”表明我们将讨论如何在JSP环境中实现文件上传和下载的功能。 首先,我们需要理解JSP文件上传的基本流程。通常,文件上传是通过HTML表单完成的,表单中包含一个`...

    jsp文件上传下载带删除功能

    【标题】"jsp文件上传下载带删除功能"指的是在Java Web开发中,使用JSP(JavaServer Pages)技术实现的一项基础功能,它涵盖了文件的上传、下载以及删除操作。这样的功能通常用于用户交互,比如允许用户上传个人资料...

    jsp文件上传下载

    【jsp文件上传下载】是一个常见的Web开发功能,用于在服务器端处理用户上传的文件并提供文件下载服务。在Java Web环境中,JSP(JavaServer Pages)是常用的动态网页技术,结合Servlet可以实现复杂的文件交互操作。 ...

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

    在JSP中实现文件上传是一项常见的任务,尤其是在构建Web应用程序时。JSP(JavaServer Pages)是一种基于Java的服务器端脚本语言,用于生成动态网页内容。以下将详细讲解如何在JSP中实现文件上传,并解决如何去除表单...

    jsp文件上传,解决中文乱码

    在这个场景下,我们关注的是`JSP文件上传`,这是一个常见的功能,用户可以通过网页上传文件到服务器,例如图片、文档等。然而,当处理中文文件名时,可能会出现乱码问题,这主要是由于字符编码不一致导致的。接下来...

    jsp 文件 上传 组件

    总结,JSP文件上传组件通常涉及JSP页面设计、Servlet处理以及第三方库如Apache Commons FileUpload的使用。理解这些知识点,开发者就能构建出健壮且安全的文件上传功能。在实际应用中,务必注意文件上传的安全性,...

    多种jsp文件上传实例

    本文将详细解析"多种jsp文件上传实例"中的知识点,涵盖单个文件上传、多个文件上传、大文件上传等核心概念。 1. **单个文件上传**: 单个文件上传通常通过HTML表单实现,包含一个`&lt;input type="file"&gt;`元素。在JSP...

    免费的 JSP多文件上传的组件.ZIP_JSP上传_jsp_jsp 上传_jsp多文件上传_jsp文件上传

    标签进一步强调了关键词“jsp上传”、“jsp多文件上传”和“jsp文件上传”,这些都与文件上传的特定场景有关。在JSP中处理多文件上传意味着组件需要能够处理一个请求中包含的多个文件,并且可能支持并发上传,以提高...

    jsp文件上传所需common包

    Apache Commons项目提供了一系列实用工具类库,极大地简化了这一过程,其中“jsp文件上传所需common包”就是针对这一需求的重要组件。这个包通常指的是Apache Commons FileUpload库和Apache Commons IO库。 Apache ...

    JSP文件上传示例代码

    综上所述,JSP文件上传涉及HTTP协议、Multipart/form-data编码、Servlet请求处理以及文件操作等多个方面。在实际开发中,通常会结合Servlet和JSP,或者使用如Apache Commons FileUpload等库来简化文件上传的实现。...

    jsp文件上传功能实现

    总结来说,实现JSP文件上传功能的关键在于理解HTTP协议中文件上传的数据格式,正确设置HTML表单,以及在服务器端正确地解析和处理上传的数据。通过上述步骤,我们可以实现一个基本的文件上传功能,但实际应用中可能...

    Jsp上传文件所需jar包

    总的来说,理解并掌握JSP文件上传所需的jar包以及如何使用它们是Java Web开发中的一个重要技能。正确配置和使用这些库可以让你的文件上传功能更加健壮、安全和高效。在实践中,还需要注意处理可能出现的异常,如文件...

    jsp文件上传源代码

    "jsp文件上传源代码"这个标题表明我们正在讨论如何在JSP中实现文件上传的功能,这在很多web应用中是必不可少的,例如用户提交个人资料时上传头像,或者在企业系统中上传文档等。 文件上传功能通常涉及到HTTP协议中...

Global site tag (gtag.js) - Google Analytics