js上传控件 plupload 使用记录


最近一个项目需要使用一个上传控件进行多图片上传,给用户更好的体验,找到了plupload,用了一下感觉还是不错的,下面是我使用的的一些记录


1.从官网上  可以获得例子 ,我集成到了jsp,如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  
<link media="screen" href="css/jquery-ui.min.css" rel="stylesheet" type="text/css">
<link media="screen" href="css/jquery.ui.plupload.css" rel="stylesheet" type="text/css">
<script  src="js/jquery.js" type="text/javascript"></script>
<script charset="UTF-8" src="js/jquery-ui.min.js" type="text/javascript"></script>
<script charset="UTF-8" src="js/plupload.full.min.js" type="text/javascript"></script>
<script charset="UTF-8" src="js/jquery.ui.plupload.min.js" type="text/javascript"></script>
<script  src="js/zh_CN.js" type="text/javascript"></script>
 <script type="text/javascript">
$(function() {
    $("#uploader").plupload({
        // General settings
        runtimes : 'html5,flash,silverlight,html4,html',
        url : "file/upload",
 
        // Maximum file size
        max_file_size : '20mb',
 
        chunk_size: '10mb',
 
        // Resize images on clientside if we can
        resize : {
            width : 1000,
            height : 1000,
            quality : 90,
            crop: true // crop to exact dimensions
        },
 
        // Specify what files to browse for
        filters : [
            {title : "Image files", extensions : "jpg,gif,png"},
            {title : "Zip files", extensions : "zip,avi"}
        ],
 
        // Rename files by clicking on their titles
        rename: true,
         
        // Sort files
        sortable: true,
 
        // Enable ability to drag'n'drop files onto the widget (currently only HTML5 supports that)
        dragdrop: true,
 
        // Views to activate
        views: {
            list: true,
            thumbs: true, // Show thumbs
            active: 'thumbs'
        },
 
        // Flash settings
        flash_swf_url : 'js/Moxie.swf',
     
        // Silverlight settings
        silverlight_xap_url : 'js/Moxie.xap'
    })
});
</script>
  </head>
  
  <body>
  <div id="uploader">
	</div>
  </body>
</html>



2.导入相应的js文件,与css美化 ,结构如下:



3.到了这一步,基本上这个控件的样子出来了,下面是后台获取上传文件源码   (ps:本人用的springmvc)   上传文件用的 spring写好的 MultipartHttpServletRequest 这个类,首先,spring-mvc配置 MultipartHttpServletRequest 的视图配置


<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
      <property name="maxUploadSize" value="104857600"/>
        <property name="maxInMemorySize" value="4096"/>
   </bean>


4.控制器实现上传



package com.springfreemark.web.controller;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

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

import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

@Component
@RequestMapping("/file/")
public class UploadController extends BaseController {
    String UPLOADDIR="F:/upload";
    
    
    @RequestMapping("upload")
    public void exec(HttpServletRequest request,HttpServletResponse response){
        MultipartHttpServletRequest multiReq = (MultipartHttpServletRequest) request;
        HashMap<String, MultipartFile>  hashMap=(HashMap<String, MultipartFile>) multiReq.getFileMap();
        InputStream  inputStream=null;
        FileOutputStream outputStream=null;
        try {
        for (Entry<String,MultipartFile> entry : hashMap.entrySet()) {
            MultipartFile  file = entry.getValue();
            inputStream =  file.getInputStream();
            File  fileDir= new File(UPLOADDIR);
            if(!fileDir.exists()||!fileDir.isDirectory()){
                fileDir.mkdir();
            }
            File uploadFile= new File(UPLOADDIR+"/"+System.currentTimeMillis()+file.getOriginalFilename());
            if(uploadFile.exists()){
                uploadFile.delete();
            }
            uploadFile.createNewFile();
            outputStream  =new FileOutputStream(uploadFile);
            byte[]  bs =  new byte[1024];
            int len=0;
            while ((len=inputStream.read(bs))>0) {
                outputStream.write(bs);
            }
            System.out.println(file.getOriginalFilename()+"上传成功");
        }
        response.getWriter().print("全部上传成功");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                if(inputStream!=null){
                    inputStream.close();
                }
                if(outputStream!=null){
                    outputStream.close();
                }
            } catch (Exception e) {
                // TODO: handle exception
            }
        
        }
    }
}



至此,大功告成!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue3中使用Plupload的步骤如下: 1. 首先,你需要在项目中引入Plupload。你可以通过在GitHub上下载并安装Plupload,或者使用npm install --save plupload命令安装Plupload依赖。 2. 在Vue组件中实例化一个Plupload对象,并传入一个配置参数对象来进行各种配置。你可以根据需要配置上传方式、限制文件类型、压缩图片等功能。 3. 调用Plupload实例对象的init()方法进行初始化。这将初始化Plupload并准备好进行文件上传。 4. 在Plupload实例对象上注册你需要的事件。Plupload提供了多种事件,可以在文件选取、上传进度、上传完成等不同阶段与Plupload进行交互。 以下是一个在Vue3中使用Plupload的示例代码: ```vue <template> <div> <plupload :file-list="theDialogForm.attachJsonArr" :limit="1" biz-type="trainModule" accept-files=".zip,.rar,.xml,.txt,.pdf,.docx,.doc,.xlsx,.xls,.ppt,.pptx,.mp4,.mp3,.gif,.png,.jpg,.jpeg,.bmp" @onChange="handleFileChange" /> </div> </template> <script> import Plupload from 'plupload' // 引入Plupload库 export default { data() { return { theDialogForm: { attachJsonArr: [] // 文件列表 } } }, mounted() { const uploader = new Plupload({ // 实例化Plupload对象 // 配置参数 }) uploader.init() // 初始化Plupload // 注册事件 uploader.bind('FilesAdded', (uploader, files) => { // 当文件添加到上传队列时触发的事件 }) // 更多事件... }, methods: { handleFileChange(fileList) { console.log('handleFileChange', fileList) } } } </script> ``` 以上代码示例中,我们在Vue组件中引入了Plupload库,实例化了Plupload对象,并在mounted钩子函数中进行了初始化和事件的注册。同时,我们定义了一个handleFileChange方法来处理文件变化事件。你可以根据自己的需求进行相应的配置和事件处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值