Plupload插件

52 篇文章 10 订阅

    Plupload插件的GitHub地址可:点击此处
    Plupload上传插件官网地址可:点击此处
    Plupload上传插件中文帮助文档可:点击此处

Plupload插件介绍

在这里插入图片描述
    首先解读一下官网的介绍哈:
    Plupload插件是一个跨浏览器的、多运行时文件上传API接口。通俗地讲,就是一系列帮助您在几分钟内构建可靠且具有视觉吸引力的文件上传器。
    在历史渊源上,Plupload源自于HTML5前的黑暗时代,因此,可支持所有替代的后备方案,像:Flash、Silverlight和Java。它旨在提供一个 API,它可以在任何地方、任何情况下以一种或另一种方式工作。尽管有非常可靠的后备,Plupload 在构建时考虑到了 HTML5 的未来。

Plupload插件下载

    Plupload插件可以从官网下载,点击此处,然后在打开页面中,点击download即可下载。
在这里插入图片描述    下载之后的文件夹结构如下,

在这里插入图片描述

Plupload插件使用

    Plupload插件在使用时,是十分方便的,在无需特殊要求的情况下,只需要引入js文件夹下的plupload.full.min.js文件即可。
在这里插入图片描述
    然后进行一顿参数配置,具体参数含义可以点击此处查看。

前端页面编写

在这里插入图片描述

    示例demo如下,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>plupload文件上传</title>

</head>
<body>
    <ul id="filelist"></ul>
    <br/>
    <div id="container">
        <a id="browse" href="javascript:;">[Browse...]</a>
        <a id="start-upload" href="javascript:;">[Start Upload]</a>
    </div>

    <br />
    <pre id="console"></pre>
</body>
<script src="../js/plupload.full.min.js"></script>
<script>
    //除文件之外要上传的参数
    let multipartParams={
        username:"小张",
        password:"258596",
        role:0,
        state:0,
    };

    //请求头
    let headers = {"token_name": "sdakldkslad"};

    //文件上传组件-参数配置
    let uploader = new plupload.Uploader({
        browse_button:"browse",//文件上传按钮
        url:"http://localhost:8099/sci_web/upload",//文件请求接口-自己写的java后端接口
        filters: {
            //文件类型过滤器
            mime_types : [
                { title : "图片", extensions : "jpg,gif,png" },
                { title : "压缩包", extensions : "zip" }
            ],
            //单个文件大小定义
            max_file_size: (1024*1024) + "kb",//0 (unlimited)
            //防止文件重复选择
            prevent_duplicates:true,//default-false
            multipart:true,//default -true ,是否将文件作为 multipart/form-data (default) 或者binary stream上传
            // multipart_params:{
            //     name:"hidsaldl"
            // },//额外的参数
            drop_element:"browse",//拖拽方式选择文件
            multi_selection:true,//开启多文件上传
            unique_names:true,//为每个文件自动生成唯一名称-作为额外的参数post到服务器端,参数明为name,值为生成的文件名
            chunk_size:"1Mb",//文件分块大小
        },
        init:{
            //文件上传之前的回调函数
            BeforeUpload:function (up,files){
                console.log("上传文件之前")
                up.setOption("multipart_params",multipartParams);
            },
            //添加文件时的回调函数
            FilesAdded: function(up, files) {
                var html = '';
                plupload.each(files, function(file) {
                    console.log(file)
                    html += '<li id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b></li>';
                });
                document.getElementById('filelist').innerHTML += html;
            },
            //文件上传时的进度条绑定
            UploadProgress: function(up, file) {
                document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>";
            },
              //文件上传完毕之后,服务器端返回的参数信息
            /**
             * uploader为当前的plupload实例对象,file为触发此事件的文件对象,responseObject为服务器返回的信息对象,它有以下3个属性:
             *          response:服务器返回的文本
             *          responseHeaders:服务器返回的头信息
             *          status:服务器返回的http状态码,比如200
             */
            FileUploaded:function (uploader,file,responseObject){
                console.log(responseObject);//打印返回值
            },
            //错误处理回调函数
            Error:function(up, err) {
                document.getElementById('console').innerHTML += "\nError #" + err.code + ": " + err.message;
            },
        }
    })
    uploader.init();//文件上传组件-初始化

    /**
     * 文件上传按钮事件绑定-激活文件上传功能
     * 单个文件逐一上传-后端只需编写处理单个文件的接口即可
     */
    document.getElementById('start-upload').onclick = function() {
        console.log('开始上传文件')
        //调用文件上传的接口-执行文件上传动作
        uploader.start();
    };


</script>
</html>

后端接口编写

    为了方便演示,直接将其保存到本地的桌面上,所在文件夹路径为:C:\Users\13241\Desktop\plupload-2.3.9。示例代码如下,
    PS-1:前后端通信注意跨域配置,详见:《SpringBoot-跨域访问3种配置方式》;
    PS-2:文件上传,注意在application.yml或者application.properties文件中修改文件上传的默认参数值,限定文件上传大小,可参考官网文档:SpringBoot#multipart配置参数
在这里插入图片描述

package com.example.controller;

import com.example.pojo.Tb_User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

/**
 * @ClassName AppController
 * @Description: com.example.controller
 * @Auther: xiwd
 * @Date: 2022/6/9 - 06 - 09 - 0:52
 * @version: 1.0
 */
@Controller
@CrossOrigin(originPatterns = "*",allowedHeaders = "*",methods = {},allowCredentials = "true")
public class AppController {


    @RequestMapping("/upload")
    @ResponseBody
    public String upload(@RequestParam MultipartFile file,
                         @RequestParam(value = "name")String name,
                         //pojo
                         Tb_User user
    ) throws IOException {
        System.out.println("*************************");
        System.out.println(name);
        System.out.println(user);
        System.out.println("*************************");
        System.out.println(file);
        System.out.println("文件上传");
        //保存文件到桌面
        file.transferTo(new File("C:\\Users\\13241\\Desktop\\plupload-2.3.9\\"+name));
        return "文件上传";
    }
}


文件上传结果

    上传结果,文件已经保存到了目标文件夹下,
在这里插入图片描述
    再看一下客户端控制台打印的接收参数信息,如下所示,也正确无误。
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
plupload是一个基于HTML5和Flash技术的开源文件上传组件,它不仅可以用于上传文件,还可以用于下载文件。 使用plupload进行下载,首先需要构建一个下载按钮,并为其绑定点击事件。当用户点击下载按钮时,可以通过调用plupload的API方法,向服务器发送下载请求。服务器收到下载请求后,可以将对应的文件发送给客户端进行下载。 在plupload中,可以使用settings对象的url属性来指定下载的服务器地址。可以自定义一个下载接口,当plupload发送下载请求时,该接口负责根据请求中的参数,获取文件的路径,读取文件内容,并发送给客户端进行下载。 例如,构建一个下载按钮的示例代码如下: ```html <button id="downloadBtn">下载文件</button> <script src="plupload.js"></script> <script> // 绑定下载按钮点击事件 document.getElementById('downloadBtn').addEventListener('click', function() { // 使用plupload的API方法发送下载请求 plupload.addFile({ name: 'filename.ext', // 文件名 url: 'download.php' // 下载接口地址 }); }); </script> ``` 在download.php文件中,可以获取到plupload发送的下载请求,根据请求中的参数,读取对应的文件,并将文件内容发送给客户端。下载文件的代码如下: ```php <?php $filename = $_GET['filename']; // 获取下载文件名 // 设置响应头信息,告诉浏览器下载文件 header('Content-Disposition: attachment; filename='.$filename); header('Content-Type: application/octet-stream'); header('Content-Transfer-Encoding: binary'); header('Content-Length: '. filesize($filename)); // 输出文件内容 readfile($filename); ?> ``` 以上就是使用plupload进行文件下载的简单示例。当用户点击下载按钮时,plupload将发送下载请求到download.php接口,该接口会读取文件内容并发送给客户端,实现文件下载功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是席木木啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值