`
lihong11
  • 浏览: 456942 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论
阅读更多
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>ajaxFileUpload文件上传例子</title>
<script type="text/javascript" src="<%=baseURL%>/kinth/js/ajaxfileupload.js"></script>
<script type="text/javascript">
   var flag=0;		//flag作用:分两种情况提交信息,如果是修改操作,没有修改上传文件,只修改其他字段的信息时点保存也能提交信息
	function uploadFile(){
		$.ajaxFileUpload({
	            url:baseURL+ "/fileCatalog.do?method=save",            //需要链接到服务器地址
		        secureuri:true,
		        fileElementId:'file',                        //文件选择框的id属性
		        success: function(data, status){   
		         	var results = $(data).find('body').html();
		         	var obj = eval("("+results+")");
		         	$("#fileSize").val(obj.fileSize);
		         	$("#fileUrl").val(obj.fileUrl);
		         	$('#fileCatalogForm').submit();
		        },error: function (data, status, e){
		                showDialogWithMsg('ideaMsg','提示','文件错误!');
		        }
	        });
	}
        
	function getFileName(obj)
	{
        flag=1;
	    	var pos = -1;
	    	if(obj.value.indexOf("/") > -1){
	     		pos = obj.value.lastIndexOf("/")*1;
	 	}else if(obj.value.indexOf("\\") > -1){
	     		pos = obj.value.lastIndexOf("\\")*1;
	 	}
	    var fileName =  obj.value.substring(pos+1);
	    $("#fileName").val(fileName);
      $('.files').text(fileName);
	}

        function ev_save(){
         	if(submitMyForm('fileCatalogForm')){
             if(flag==0){
                $('#fileCatalogForm').submit();
             }else{
              	uploadFile();
             } 
           }           
         }

         function ev_back(){
		window.location.href=baseURL+'/fileCatalog.do?method=list';
	}
</script>
</head>
<body>
	<html:form styleId="fileCatalogForm" action="/fileCatalog.do?method=save&fileFlag=true" method="post" enctype="application/x-www-form-urlencoded" style="text-align:left;">
	<table>
		<tr>
			<td>附件上传:</td>
			<td style="text-align:left;"  id="fileTd">
				<input type="file" name="file" id="file" onChange="getFileName(this);"  /><br />				
			</td>
			<td colspan="2" class="tdr">
				<ol  class=files>
					<c:if test="${entity.resourceId != null && entity.resourceId != ''}"><li> ${entity.fileName}&nbsp;&nbsp;上传成功</li></c:if>
				</ol>
			</td>
		</tr> 
		<c:if test="${entity.resourceId == null || entity.resourceId == ''}">
			<input type="text" name="fileSize" id="fileSize" >
		</c:if>	
		<input type="hidden" id="fileUrl" name="fileUrl" value="${entity.fileUrl}" 
	</table>
	</html:form>
</body>

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>jqueryUploadify文件上传例子</title>
<script type="text/javascript" src="<%=baseURL %>/kinth/common/js/jquery.validate.js" ></script>
<!-- 附件上传    -->
		 
		<link href="<%=baseURL%>/kinth/common/jqueryUpload/uploadify.css" rel="stylesheet" type="text/css" />
		<script type="text/javascript" src="<%=baseURL%>/kinth/common/jqueryUpload/swfobject.js"></script>
		<script type="text/javascript" src="<%=baseURL%>/kinth/common/jqueryUpload/jquery.uploadify.v2.0.3.min.js"></script>
		<script type="text/javascript">
        var flag=0;
        $(document).ready(function() {
            $("#files").uploadify({
                'uploader'       : '<%=baseURL%>/kinth/common/jqueryUpload/uploadify.swf',
                'script'         : '<%=baseURL%>/fileCatalog.do?method=fileUpload',
                'cancelImg'      : '<%=baseURL%>/kinth/common/jqueryUpload/cancel.png',
                'queueID'        : 'fileQueue',
                'scriptData'     :  {'resourceId' : $('#resourceId').val()},
                'auto'           : false,
                'multi'          : false,
                'buttonText'     : 'Brower file',                   
	            onComplete: function (evt, queueID, fileObj, response, data) {
					$('#fileUrl').attr("value",response);
      				$('<li></li>').appendTo('.files').text(fileObj.name+"上传成功");
					$('#fileCatalogForm').submit();
      				},
				onSelect: function(evt,queueID, fileObj){
					flag=1;
					var filename = fileObj.name;
					$('#fileName').attr("value",filename.substring(0,filename.lastIndexOf(".")));					
					$('#fileSize').attr("value",fileObj.size);
				},
				onError: function(a, b, c, d) {
					alert("文件上传失败");
             	}
            });

        });
        
        function myuploadifyUpload(){
		  	$('#files').uploadifyUpload();
		} 
        
        function ev_save(){
          if(submitMyForm('fileCatalogForm')){
             if(flag==0){
              $('#fileCatalogForm').submit();
             }else{
              myuploadifyUpload();
             }
          }
        }
 </script>

</head>
<body>
	<html:form styleId="fileCatalogForm" action="/fileCatalog.do?method=save" method="post" enctype="application/x-www-form-urlencoded" style="text-align:left;">
	<table>
		<tr>
			<td>附件上传:</td>
			<td style="text-align:left;" >
			    <input type="file" name="files" id="files" /><br />
			    ${entity.fileName}
			    <input type="hidden" id="fileUrl" name="fileUrl" value="${entity.fileUrl}" />	 
			    <div id="fileQueue"></div>
				   <ol class=files></ol>
			    <p>
				   <a href="javascript:jQuery('#files').uploadifyClearQueue()">取消所有上传</a>
			    </p>
			</td>		
		</tr> 
		<c:if test="${entity.resourceId == null || entity.resourceId == ''}">
			<input type="text" name="fileSize" id="fileSize" />
			<input type="text" id="fileName" name="fileName" />
		</c:if>	
		<input type="hidden" id="fileUrl" name="fileUrl" value="${entity.fileUrl}" 
	</table>
	</html:form>
</body>

 

package com.kinth.hddpt.file.action;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;

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

import net.sf.json.JSONArray;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.gdcn.bpaf.common.base.search.MyCriteria;
import com.gdcn.bpaf.common.base.search.MyCriteriaFactory;
import com.gdcn.bpaf.common.base.service.BaseService;
import com.gdcn.bpaf.common.helper.PagerList;
import com.gdcn.bpaf.common.helper.WebHelper;
import com.gdcn.bpaf.common.taglib.SplitPage;
import com.gdcn.bpaf.security.model.LogonVO;
import com.gdcn.components.appauth.common.helper.DictionaryHelper;
import com.kinth.common.base.action.BaseAction;
import com.kinth.hddpt.file.action.form.FileCatalogForm;
import com.kinth.hddpt.file.model.FileCatalog;
import com.kinth.hddpt.file.service.FileCatalogService;
import com.kinth.hddpt.file.util.MyZTreeNode;

/**
 * <p>
 * description: “文件上传的Struts层请求处理类”
 * </p>
 * @date : 2013-1-14
 */
public class FileCatalogAction extends BaseAction<FileCatalog> {
	@SuppressWarnings("unused")
	private static Log log = LogFactory.getLog(FileCatalogAction.class); // 日志记录
	private FileCatalogService fileCatalogService;
	
	// 删除记录的同时删除相应文件
	public ActionForward fileDelete(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String[] id = request.getParameterValues("resourceId");

		if (id != null && id[0].contains(",")) {
			id = id[0].split(",");
		}
		String[] fileUrls = new String[id.length];
		for (int j = 0; j < id.length; j++) {
			fileUrls[j] = fileCatalogService.findObject(id[j]).getFileUrl();
			if (!isEmpty(fileUrls[j])) {
				// 如果该文件夹不存在则创建一个uptext文件夹
				File fileup = new File(fileUrls[j]);
				if (fileup.exists() || fileup != null) {
					fileup.delete();
				}
			}

			fileCatalogService.deleteObject(id[j]);
		}
		setAllActionInfos(request);
		return list(mapping, form, request, response);
	}
	

	@Override
	public ActionForward save(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String id = request.getParameter("resourceId");	
		Boolean fileFlag = Boolean.valueOf(request.getParameter("fileFlag"));
		
		if(fileFlag != null && fileFlag == true){
			return super.save(mapping, form, request, response);
		}else{
			String fileUrl = this.fileUpload(form, request, id, fileFlag);
			response.setContentType("text/html");
	        response.setCharacterEncoding("GBK");
		    response.setHeader("Charset", "GBK");
		    response.setHeader("Cache-Control", "no-cache");
		    response.getWriter().write(fileUrl);
		    response.getWriter().flush();
		}
		return null;
	}

	@SuppressWarnings("unchecked")
	public String fileUpload(ActionForm form,HttpServletRequest request,String id,Boolean fileFlag) throws FileNotFoundException, IOException{
		
        request.setCharacterEncoding("GBK");
        
        String basePath = getServlet().getServletConfig().getServletContext().getRealPath("")+"/";
        String filePath = "uploads/"; // 获取项目根路径	;
        
        /*注释部分对应jquery upload uploadify插件的后台代码,只是还存在编码问题,默认为utf-8
		String savePath = getServlet().getServletConfig().getServletContext().getRealPath(""); // 获取项目根路径
        savePath = savePath + "\\uploads\\";
        //读取上传来的文件信息
        Hashtable<String, FormFile> fileHashtable = form.getMultipartRequestHandler().getFileElements();
        Enumeration<String> enumeration = fileHashtable.keys();
        enumeration.hasMoreElements();
        String key = (String) enumeration.nextElement();
        
        FormFile formFile = (FormFile)fileHashtable.get(key);
        
        String filename = formFile.getFileName().trim(); //文件名
        filename = new EncodeChange().changeCode(filename);
        String filetype = filename.substring(filename.lastIndexOf(".") + 1);//文件类型
        savePath = savePath+filetype+"\\";
        System.out.println("path:"+savePath);
        String realPath = savePath +  filename; //真实文件路径
        
        //如果该文件夹不存在则创建一个文件夹
        File fileup = new File(savePath);
        if(!fileup.exists()||fileup==null){
            fileup.mkdirs();
        }
        if (!filename.equals("")) {
            // 在这里上传文件
          InputStream is = formFile.getInputStream();
          OutputStream os = new FileOutputStream(realPath);
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            is.close();
            //如果是修改操作,则删除原来的文件
            String id = request.getParameter("resourceId");
            if (!isEmpty(id)) {
              FileCatalog fileCatalog = fileCatalogService.findObject(id);
              String fileUrl = fileCatalog.getFileUrl();
              if (!isEmpty(fileUrl)) {
                File filedel = new File(fileUrl);
                if(filedel.exists()||filedel!=null){
                  filedel.delete();
                }
              }
              
              request.setAttribute("entity", fileCatalog);
           }
           
        response.getWriter().print(realPath);// 向页面端返回结果信息
        }*/
       
		// 读取上传来的文件信息
		Hashtable<String, FormFile> fileHashtable = form.getMultipartRequestHandler().getFileElements();
		Enumeration<String> enumeration = fileHashtable.keys();
		enumeration.hasMoreElements();
		String key = (String) enumeration.nextElement();

		FormFile formFile = (FormFile) fileHashtable.get(key);

		String filename = formFile.getFileName().trim(); // 文件名
		String filetype = filename.substring(filename.lastIndexOf(".") + 1);// 文件类型		
		Integer fileSize = formFile.getFileSize();
		
	
		filePath += Calendar.getInstance().get(Calendar.YEAR)+"/"+filetype+"/" ;
		String realPath = basePath+filePath+filename;  // 真实文件路径
		
		if (!filename.equals("")) {
			// 如果是修改操作,则删除原来的文件
			if (!isEmpty(id)) {
				FileCatalog fileCatalog = fileCatalogService.findObject(id);
				String fileUrl = fileCatalog.getFileUrl();
				if (!isEmpty(fileUrl)) {
					fileUrl = basePath + fileUrl;
					File filedel = new File(fileUrl);
					if (filedel.exists() || filedel != null) {
						filedel.delete();
					}
				}
				request.setAttribute("entity", fileCatalog);
			}
			// 如果该文件夹不存在则创建一个文件夹
			File fileup = new File(basePath+filePath);
			if (!fileup.exists() || fileup == null) {
				fileup.mkdirs();
			}
			// 在这里上传文件
			InputStream is = formFile.getInputStream();
			OutputStream os = new FileOutputStream(realPath);
			int bytesRead = 0;
			byte[] buffer = new byte[8192];
			while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {
				os.write(buffer, 0, bytesRead);
			}
			os.close();
			is.close();
		}
		filePath += filename;
		String result = "{\"fileName\":\""+filename+"\",\"fileType\":\""+filetype+"\",\"fileSize\":"+fileSize+",\"fileUrl\":\""+filePath+"\"}";			
	    return result;
		
	}

	public FileCatalogService getFileCatalogService() {
		return fileCatalogService;
	}

	public void setFileCatalogService(FileCatalogService fileCatalogService) {
		this.fileCatalogService = fileCatalogService;
	}
	
}

 

package com.kinth.hddpt.file.action;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

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

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

/*
jqueryUploadify文件上传servlet类,写了此类就可以不用到action中写fileUpload方法了,只是不能把上传的文件保存到数据库中

这种方法记得配置web.xml哦,
如
<!--附件上传开始-->
 
<servlet>
  
<servlet-name>Upload</servlet-name>
  
<servlet-class>
com.kinth.hddpt.file.action.UploadController
</servlet-class>

</servlet>
 
<servlet-mapping>

<servlet-name>Upload</servlet-name>
  
<url-pattern>/servlet/fileUpload</url-pattern>
 
</servlet-mapping>
      
<!--附件上传结束--> 
     
 
*/
public class UploadController extends HttpServlet {

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setCharacterEncoding("utf-8");
        
		String savePath = this.getServletConfig().getServletContext().getRealPath("");
		savePath = savePath + "/uploads/resourses/";

		DiskFileItemFactory fac = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(fac);
		upload.setHeaderEncoding("utf-8");
		List fileList = null;
		try {
			fileList = upload.parseRequest(request);
		} catch (FileUploadException ex) {
			ex.printStackTrace();
		}
		Iterator<FileItem> it = fileList.iterator();
		String name = "";
		String extName = "";
		String category = "";

		while (it.hasNext()) {
			FileItem item = it.next();
			if (item.isFormField()) {
				if ("category".equals(item.getFieldName())) {
					category = item.getString("utf-8");
				}
			} else if (!item.isFormField()) {
				name = item.getName();
				if (name == null || name.trim().equals("")) {
					continue;
				}
				// 扩展名格式:
				if (name.lastIndexOf(".") >= 0) {
					extName = name.substring(name.lastIndexOf("."));
				}
				savePath = savePath  + category + "/";
				File f1 = new File(savePath);
				if (!f1.exists()) {
					f1.mkdirs();
				}
				File saveFile = new File(savePath + name);
				try {
					item.write(saveFile);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		response.getWriter().print(name + " 上传成功");
	}
}





 

2
6
分享到:
评论
7 楼 f756692193 2015-04-03  
没有js..这让我们如何是好。。
6 楼 liuweihug 2014-12-08  
基于bootstrap样式的asp.net+plupload多图片文件上传预览及展示
http://www.suchso.com/UIweb/bootstrap-aspnet-plupload-multi-image-upload.html
5 楼 liuweihug 2014-10-21  
asp.net+jquery.upload实现多文件上传+进度条加遮罩层 - 前端编程 - IT工作生活这点事。Just Such So!
http://www.suchso.com/UIweb/jquery-upload-mutifiles-html5.html
4 楼 liuweihug 2014-10-21  
基于bootstrap样式的asp.net+plupload多图片文件上传预览及展示
http://www.suchso.com/UIweb/bootstrap-aspnet-plupload-multi-image-upload.html
3 楼 dwtedx 2014-03-27  
不错,自己写还是比较麻烦
给大家推荐一个文件上传的控件
jQuery File Upload
http://dwtedx.sinaapp.com/itshare/display.php?code=48
2 楼 landieyezxx 2013-10-14  
缺少js文件
1 楼 lsjinpeng 2013-03-20  
see mark

相关推荐

    C# .NET FileUpload 多文件上传例子

    在这个"C# .NET FileUpload 多文件上传例子"中,我们将探讨两种主要的方法,帮助你理解和掌握这一关键功能。 首先,我们要知道ASP.NET中的`&lt;asp:FileUpload&gt;`控件是实现文件上传的核心组件。它可以允许用户从本地...

    C#多文件上传例子

    本示例探讨的是"C#多文件上传"的功能,它实现了用户在无需页面刷新的情况下,能够上传多个文件。这种技术在现代Web应用中非常常见,可以提升用户体验,因为用户不必等待每次上传文件后页面的重新加载。 无刷新多...

    jquery实现的AJAX的一些例子

    5. **异步文件上传**: 使用`FormData`对象和`$.ajax()`,可以在AJAX请求中上传文件: ```javascript var formData = new FormData($('#yourForm')[0]); $.ajax({ url: 'your_server_url', type: 'POST', ...

    jquery很好用的表单验证和文件上传

    在这个例子中,'uploader'指定了SWF文件的位置,'script'是处理文件上传的服务器端脚本,'folder'是文件上传的目标目录,而'multi'参数设置为true允许用户选择多个文件进行上传。 综上所述,jQuery结合其Validation...

    树形控件和jquery上传附件

    常见的jQuery文件上传插件有jQuery File Upload、Plupload等。这些插件支持多文件选择、进度条显示、预览、取消上传等功能,大大提升了用户体验。在实际应用中,我们需要创建一个HTML表单,添加input元素类型为file...

    Asp.Net WebApi 上传文件方法(原生js上传和JQ ajax上传)

    本教程将探讨两种不同的客户端上传方式:原生JavaScript和jQuery AJAX。这两种方法都可以与Asp.Net WebApi结合,实现用户友好的文件上传功能。 首先,我们要理解Asp.Net WebApi的核心概念。WebApi是一个用于构建...

    Javascript和jQuery结合运用的例子(网络相册) 曾顺 编著

    《Javascript和jQuery结合运用的例子——网络相册》是曾顺编著的一本实践教程,它深入浅出地探讨了如何将这两种强大的JavaScript技术融合应用于实际项目中,特别是以创建一个网络相册为例,展示了从需求分析到功能...

    spring mvc ajax异步文件的上传和普通文件上传

    本篇将详细讲解这两种方式的实现原理及步骤。 首先,让我们来理解一下普通文件上传。在Spring MVC中,我们可以利用`@RequestParam`注解接收上传的文件。在HTML表单中,我们需要设置`enctype="multipart/form-data"`...

    同时兼容IE和FireFox的事件处理event代码--添加文件上传例子

    为了兼容这两种情况,我们可以使用条件语句或者使用像jQuery这样的库来抽象出浏览器差异: ```javascript var fileInput = document.getElementById('fileInput'); if (fileInput.addEventListener) { fileInput....

    WebAPIFileUploadDemo通过multipart/form-data方式同时上传文件以及数据包含客户端上传例子

    - 异步处理:使用异步操作处理文件上传,提高用户体验。 - 错误处理:添加适当的错误处理机制,以处理上传失败的情况。 5. **性能优化**: - 分块上传:对于大文件,可以考虑分块上传,减少内存占用和提高上传...

    使用前端插件上传文件到ftp服务器

    为了在前端实现文件上传,我们可以利用各种开源插件,如jQuery File Upload、Plupload或Dropzone.js等。这些插件提供了丰富的功能,包括多文件选择、进度条显示、文件类型和大小限制等。在我们的场景中,我们可以...

    一个精简版的基于ASP.NET+ajax实现的文件上传实例源码例子

    在这个精简版的文件上传实例中,开发者利用了这两种技术的优势,创建了一个对初学者友好的源码示例。 ASP.NET是由微软开发的一个强大的Web应用程序框架,它允许开发者使用.NET Framework的多种编程语言(如C#或VB...

    金山云jquery鼠标滑过上下切换

    2. **动画效果**:`.slideUp()`和`.slideDown()`是jQuery提供的两种基本动画效果,分别用于隐藏和显示元素。通过配合使用这两个方法,可以实现上下切换的效果。 3. **CSS操作**:可能需要使用`.css()`方法来改变...

    jQuery权威指南-源代码

    7.10 综合案例分析—使用uploadify插件实现文件上传功能 /232 7.10.1 需求分析/232 7.10.2 效果界面/233 7.10.3 功能实现/234 7.10.4 代码分析/236 7.11 本章小结/241 第8章 jQuery UI插件/242 8.1 认识...

    jQuery异步提交表单的两种方式

    两种方式都是异步提交表单,但有以下几点不同: 1. **调用方式**:第一种方式是直接调用`$.ajax`,而第二种方式是先调用`$.ajaxSubmit`,这个方法是`jquery.form.js`插件提供的,它简化了表单提交的流程。 2. **...

    jquery实现上传文件大小类型的验证例子(推荐)

    本文将详细解读如何使用jQuery来实现文件上传时对文件大小和类型的校验。这是一个实用的前端技术点,它确保了上传到服务器的文件符合预设的规范,避免了因文件类型或大小不当而引发的问题。 首先,我们看到文件中...

    C#文件上传案例.zip

    总的来说,"C#文件上传案例.zip"涵盖了前端与后端协同进行文件上传的基本流程和两种实现方式。无论选择Base64编码还是使用插件,都需要确保跨域、安全性(防止XSS和CSRF攻击)以及错误处理等方面的考虑。在实际项目...

    asp.net 实现大文件上传功能

    在ASP.NET中实现大文件上传是一项常见的需求,尤其是在处理用户提交的多媒体内容或者大型数据文件时。本篇文章将深入探讨如何在ASP.NET环境下构建大文件上传功能,包括关键的技术点、注意事项以及示例代码。 首先,...

    jquery ajax实现文件上传功能实例代码

    在实现文件上传功能时,我们通常会遇到单文件上传和多文件上传两种情况。HTML5中对文件上传进行了增强,通过添加`&lt;input&gt;`元素的`multiple`属性,我们可以实现多文件选择上传。在前端获取用户选择的文件后,需要构建...

Global site tag (gtag.js) - Google Analytics