精华内容
下载资源
问答
  • 文件上传进度条

    2020-07-08 22:25:20
    2、进度条HTML代码,需要引用boostrap相关的样式文件 <div id="pross" class="progress" style="width:400px;margin-top:10px;display:none;"> <div class="progress-bar progress-bar-striped active" ...

    1、导入效果

    2、进度条HTML代码,需要引用boostrap相关的样式文件 

    <div id="pross" class="progress" style="width:400px;margin-top:10px;display:none;">
        <div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
            0%
        </div>
    </div>
    <div id="div_import_result" style="display:none;color:red;word-break:break-all;width:400px;">
    </div>

    3、 JS 代码

    this.resultProgress = function (loaded, total) {
        var percent = loaded / total * 100;
        var percentStr = String(percent);
        if (percentStr == "100") {
            percentStr = "100.0";
        }
        percentStr = percentStr.substring(0, percentStr.indexOf("."));
        $("#div_import_result").hide();
        $("#pross").show();
        var timesRun = percentStr;
    
        $("#pross .progress-bar").attr('aria-valuenow', timesRun);
        $("#pross .progress-bar").css('width', timesRun + '%');
        $("#pross .progress-bar").html(timesRun + '%');
    }
    this.ImprotUserBtnSave = function (event, ele) {
        var formData = new FormData();
        var fileInput = document.getElementById("fileField");
    
        for (var i = 0; i < fileInput.files.length; i++) {
            var file = fileInput.files[i];
            formData.append("file" + i, file);
        }
        page.resultProgress((0), 1)
        $.ajax({
            url: "/User/ImportUser",
            type: "POST",
            data: formData,
            contentType: false, //必须false才会自动加上正确的Content-Type
            processData: false,  //必须false才会避开jQuery对 formdata 的默认处理
            enctype: 'multipart/form-data',
            //xhr: function () {
            //    //获取ajax中的ajaxSettings的xhr对象  为他的upload属性绑定progress事件的处理函数
            //    var myXhr = $.ajaxSettings.xhr();
            //    if (myXhr.upload) {
            //        //检查其属性upload是否存在
            //        myXhr.upload.addEventListener("progress", page.resultProgress, false);
            //    }
            //    return myXhr;
            //},
            success: function (data) {
    
                if (data.IsSuccess)
                    page.getImportUserProcess(data.Data);
    
                //page.CloseModelDiv(ele);
            },
            error: function (data) {
                console.log(data);
            }
        })
    }
    
    this.getImportUserProcess = function (guid) {
        var timestamp = new Date().getTime();
        $.ajax({
            url: "/Common/GetImprotProcess?guid=" + guid + "&t=" + timestamp,
            type: "get",
            success: function (oD) {
                if (oD.IsSuccess) {
                    page.resultProgress((oD.Data.SuccessCount + oD.Data.ErrorCount), oD.Data.Total)
                    if (oD.Data.IsSuccess) {
                        page.ClearProgress();
                        setTimeout(function () {
                            var message = "共" +oD.Data.Total+
                             "条数据,成功" +oD.Data.SuccessCount+
                              "条数据,失败" +oD.Data.ErrorCount+
                               "条数据";
                            $("#div_import_result").text(message);
                            $("#div_import_result").show();
                            if (oD.Data.ErrorCount > 0)
                                page.Down(null,"/Common/GetImportErrorResult?guid=" + guid,'导入失败日志.cvs');
                        }, 1000);
                    } else {
                        setTimeout(function () {
                            page.getImportUserProcess(guid)
                        }, 1000)
                    }
                }
            }
        });
    }
    
    // 下载导入结果
    this.Down = function (formData, url, name) {
        return new Promise((resolve, reject) => {
            var xhr = new XMLHttpRequest();
            xhr.open("get", url, true); // 也可以使用POST方式,根据接口
            xhr.responseType = "blob"; // 返回类型blob
            // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
            xhr.onload = function () {
                // 请求完成
                if (this.status === 200) {
                    // 返回200
                    var blob = this.response;
                    var reader = new FileReader();
                    reader.readAsDataURL(blob); // 转换为base64,可以直接放入a表情href
                    reader.onload = function (e) {
                                    // 转换完成,创建一个a标签用于下载
                                    var a = document.createElement("a");
                                    a.download = name;
                                    a.href = e.target.result;
                                    $("body").append(a); // 修复firefox中无法触发click
                                    a.click();
                                    resolve(200)
                                    $(a).remove();
                                };
                }
            };
            // 发送ajax请求
            xhr.send(formData);
        })
    };

    4、后端代码

    // 获取导入进度
    [HttpGet]
    [Route("GetImportProcess")]
    public ResponseResult<ImportProcess> GetImportProcess(Guid guid)
    {
        ...
    }
    
    // 获取导入结果(文件流的方式输出)
    [HttpGet]
    public IActionResult GetImportErrorResult(Guid guid)
    {
        var fileName = "导入结果.cvs";
        var stream = Encoding.UTF8.GetBytes($"获取失败,{result.Error}");
        return File(stream, "text/plain", fileName);
    }
    
    // 导入
    [HttpPost]
    public IActionResult ImportUser()
    {
        var files = Request.Form.Files;
        if (files != null && files.Count > 0)
        {        
            var lst = new List<string>();
            using (var fileStream = item.OpenReadStream())
            {
                using (StreamReader streamReader = new StreamReader(fileStream))
                {
                    while (streamReader.Peek() != -1)
                    {
                        string str = streamReader.ReadLine();
    
                        lst.Add(str);
                    }
                }
            }
            
            Task.Run(()=>{
                Import(lst);
            });                        
        }
    
        return Json(new ResponseResult<string>()
        {
            IsSuccess = true,
            Data = Guid.NewGuid()
        });
    }

    5、设计思路:一共有三个接口,ImportUser、GetImportProcess、GetImportErrorResult。

    5.1、导入接口(ImportUser)

    上传文件、解析文件内容、检测数据是否合法并导入数据库。

    生成一个唯一标识和导入进度(上传成功、失败数量)绑定并写入缓存。

    返回唯一标识。

    5.2、获取导入进度(GetImportProcess)

    跟据导入接口返回的唯一标识到缓存中查询导入进度。前端需要不断的发送请求,直到上传完为止。

    5.3、获取导入结果(GetImportErrorResult)

    当导入过程中有失败的记录需要已文本文件的形式展示。

    导入完成后并且有导入失败的记录那么会调用该接口获取。

    通过导入接口返回的唯一标识到缓存中查询并将查询的结果已文件流的形式返回给前端下载。

    展开全文
  • 为了更好地用户体验,我们在做文件上传时需要将文件上传的实时进度返回给浏览器进行展示  请注意返回的进度是从浏览器上传到服务器的这一段的进度条,而不是后台的controller方法的处理进度  开始动手写:  ...

    jquery前端文件上传进度条(非插件),spring boot文件上传实时进度条

    为了更好地用户体验,我们在做文件上传时需要将文件上传的实时进度返回给浏览器进行展示

     请注意返回的进度是从浏览器上传到服务器的这一段的进度条,而不是后台的controller方法的处理进度

     开始动手写: 

    spring boot快速搭建项目,只要一个编写controller即可,为了能测试大文件上传,需要编写一个配置类,配置文件上传的大小

    配置类

    package com.ning.config;
    
    import javax.servlet.MultipartConfigElement;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.web.servlet.MultipartConfigFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    @Configuration
    public class FileUploadConfig {
    	@Bean
    	public MultipartConfigElement multipartConfigElement(
    			@Value("${multipart.maxFileSize}") String maxFileSize,
    			@Value("${multipart.maxRequestSize}") String maxRequestSize) {
    		MultipartConfigFactory factory = new MultipartConfigFactory();
    		// 单个文件最大
    		factory.setMaxFileSize(maxFileSize);
    		// 设置总上传数据总大小
    		factory.setMaxRequestSize(maxRequestSize);
    		return factory.createMultipartConfig();
    	}
    }
    

    application.properties

    multipart.maxFileSize=500Mb
    multipart.maxRequestSize=500Mb

    UploadController

    package com.ning.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    
    @RestController
    public class UploadController {
    	@RequestMapping("/upload")
    	public String uplaod(@RequestParam("file") MultipartFile file) {
    		System.out.println(file);
    		return "上传文件成功!";
    	}
    }
    

    至此,java程序编写完成,接下来是前端html,也很简洁,进度条为了好看我采用了bootstrap的进度条

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>文件上传进度条</title>
    <link href="bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet"/>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript" src="bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
    </head>
    <body>
    	<input type="file" id="fileBtn">
    	<div class="progress">
    	  <div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
    	    <span class="sr-only">40% Complete (success)</span>
    	  </div>
    	</div>
    	<button type="button" class="btn btn-success" id="subBtn">点击上传文件</button>
    	<script type="text/javascript">
    		$("#subBtn").click(function(){
    			var formData = new FormData();  
    			formData.append("file",$("#fileBtn")[0].files[0]);
    			$.ajax({
    				url:"/upload",
    				type:"post",
    				data:formData,
    				contentType: false,//必须false才会自动加上正确的Content-Type
                	processData: false,
                	xhr:function(){
                		myXhr = $.ajaxSettings.xhr();
                		if(myXhr.upload){ //检查upload属性是否存在  
                            //绑定progress事件的回调函数  
                            myXhr.upload.addEventListener('progress',function(e){
                            	var curr=e.loaded;
                    			var total=e.total;
                    			process=curr/total*100;
                    			console.log(process);
                    			$(".progress-bar").css("width",process+"%");
                            }, false);   
                        }  
                		return myXhr; 
                	},
                	success:function(data){
                		console.log(data);
                	}
    			});
    		});
    	</script>
    </body>
    </html>

    这是全部的主要文件了,页面效果是这样的:

    选择文件后点击上传就进度条就会动起来: 效果如下

    再次强调这个进度条是,浏览器端到controller方法之前的进度条,而不是controller方法的执行进度

     如果我的分享可以帮到大家欢迎点赞分享哦!可以到我的个人网站支持一下哦,大量技术干货哦!

    http://www.xinxiera.cn

    展开全文
  • Layui文件上传进度条

    万次阅读 热门讨论 2018-08-27 19:14:34
    最近项目有个需求,要求文件上传有实时进度条,前端框架使用的是layui,但是layui的文件上传(upload)和进度条并没有结合,这里只能靠改源码的方式实现之,折腾了蛮久,最后还是在公司前端的帮助下完成了,感谢。...

    最近项目有个需求,要求文件上传有实时进度条,前端框架使用的是layui,但是layui的文件上传(upload)和进度条并没有做结合,这里只能靠改源码的方式实现之,折腾了蛮久,最后还是在公司前端的帮助下完成了,感谢。

    1.修改layui文件上传ajax的代码:

    这里使用的是layui(2.4.3版本)的非模块化 (layui.all.js),模块化请修改modules/upload.js

    直接复制粘接进去即可:

    xhr:function () {
    	var newXhr = i.ajaxSettings.xhr();
    	// 给xhr的upload添加progress的监听
    	newXhr.upload.addEventListener('progress' , function (e) {
    		var percent = Math.floor(e.loaded / e.total * 100); //计算出进度
    		typeof l.progress === 'function' && l.progress(e , percent); // 传递给upload的progress回调
    	});
    	return newXhr;
    },

    2.页面以及upload

    <!DOCTYPE html>
    <html>
    
    	<head>
    		<meta charset="UTF-8">
    		<title>文件上传进度条</title>
    		<script src="../static/jquery-3.3.1.js" type="text/javascript" charset="utf-8"></script>
    		<script src="../static/layui.all.js" type="text/javascript" charset="utf-8"></script>
    		<link rel="stylesheet" type="text/css" href="../static/css/layui.css" />
    	</head>
    
    	<body>
    		<button type="button" class="layui-btn" id="chooseFile">
      			<i class="layui-icon">&#xe67c;</i>选择文件
    		</button> 文件名称: <span id="fileName"></span>
    		<div style="height: 20px;"></div>
    		<button type="button" class="layui-btn" id="uploadBtn">
      			<i class="layui-icon">&#xe67c;</i>上传文件
    		</button>
    		<div style="height: 20px;"></div>
    		<div class="layui-progress layui-progress-big" lay-showPercent="yes" lay-filter="progressBar">
    			<div class="layui-progress-bar layui-bg-red" lay-percent="0%"></div>
    		</div>
    		<script type="text/javascript">
    			var upload = layui.upload,
    				element = layui.element;
    			element.init();
    			
    			
    			upload.render({
    				elem: '#chooseFile', // 文件选择
    				accept:'file',
    				url: '/fileUpload',
    				auto: false, // 设置不自动提交
    				bindAction: '#uploadBtn', // 提交按钮
    				progress: function(e , percent) {
    					console.log("进度:" + percent + '%');
    					element.progress('progressBar',percent  + '%');
    				},
    				choose: function(obj) {
    					obj.preview(function(index, file, result) {
    						$("#fileName").html(file.name);
    					});
    				},
    				done: function(res) {
    					layer.msg(res.msg);
    				},
    				error: function(res) {
    					layer.msg(res.msg);
    				}
    			});
    		</script>
    	</body>
    </html>

    测试:

    搞定!有疑问欢迎留言,反正我也解答不上来哈哈哈。

    展开全文
  • asp+ajax的无刷新文件上传进度条,最大可上传10G的文件,可同时兼容IE;FireFox等浏览器。大家如果有更好的可改进的想法可以和我交流。
  • 下面小编就为大家带来一篇jQuery监听文件上传实现进度条效果的方法。小编觉得挺不错的,现在就分享给大家,也给大家个参考。一起跟随小编过来看看吧
  • 在工作中需要做文件上传,使用的技术是struts2和jsp 需要做进度条一直没找到解决办法希望哪位前辈做过给个思路 最好有源代码。
  • 下面小编就为大家带来一篇基于fileUpload文件上传进度条效果的实例(必看)。小编觉得挺不错的,现在就分享给大家,也给大家个参考。一起跟随小编过来看看吧
  • 文件上传进度条(多种风格)

    千次阅读 2018-07-13 14:39:11
    文件上传进度条 多种风格 非常漂亮! 友好的提示 以及上传验证! 部分代码: &lt;form id="form1" runat="server"&
    原文地址为:
    文件上传 带进度条(多种风格)
    

    文件上传 带进度条 多种风格 非常漂亮!

    曾祥展

     

    曾祥展

     

     曾祥展

    曾祥展

    曾祥展

    友好的提示 以及上传验证!

    曾祥展

     

    曾祥展

     

    曾祥展

     

    曾祥展

     

    部分代码:

     

    <form id="form1" runat="server">
    <
    asp:ScriptManager ID="scriptManager" runat="server" EnablePageMethods="true" />

    <
    script type="text/javascript">
    var
    intervalID = 0;
    var progressBar;
    var fileUpload;
    var form;
    // 进度条
    function pageLoad(){
    $addHandler($get('upload'), 'click', onUploadClick);
    progressBar = $find('progress');
    }
    // 注册表单
    function register(form, fileUpload){
    this.form = form;
    this.fileUpload = fileUpload;
    }
    //上传验证
    function onUploadClick() {
    var vaild = fileUpload.value.length > 0;
    if(vaild){
    $get('upload').disabled = 'disabled';
    updateMessage('info', '初始化上传...');
    //提交上传
    form.submit();
    // 隐藏frame
    Sys.UI.DomElement.addCssClass($get('uploadFrame'), 'hidden');
    // 0开始显示进度条
    progressBar.set_percentage(0);
    progressBar.show();
    // 上传过程
    intervalID = window.setInterval(function(){
    PageMethods.GetUploadStatus(function(result){
    if(result){
    // 更新进度条为新值
    progressBar.set_percentage(result.percentComplete);
    //更新信息
    updateMessage('info', result.message);

    if(result == 100){
    // 自动消失
    window.clearInterval(intervalID);
    }
    }
    });
    }, 500);
    }
    else{
    onComplete('error', '您必需选择一个文件');
    }
    }

    function onComplete(type, msg){
    // 自动消失
    window.clearInterval(intervalID);
    // 显示消息
    updateMessage(type, msg);
    // 隐藏进度条
    progressBar.hide();
    progressBar.set_percentage(0);
    // 重新启用按钮
    $get('upload').disabled = '';
    // 显示frame
    Sys.UI.DomElement.removeCssClass($get('uploadFrame'), 'hidden');
    }
    function updateMessage(type, value){
    var status = $get('status');
    status.innerHTML = value;
    // 移除样式
    status.className = '';
    Sys.UI.DomElement.addCssClass(status, type);
    }

    </script>

    <
    div>
    <
    div class="upload">
    <
    h3>文件上传</h3>
    <
    div>
    <
    iframe id="uploadFrame" frameborder="0" scrolling="no" src="Upload.aspx"></iframe>
    <
    mb:ProgressControl ID="progress" runat="server" CssClass="lightblue" style="display:none" Value="0" Mode="Manual" Speed=".4" Width="100%" />
    <
    div>
    <
    div id="status" class="info">请选择要上传的文件</div>
    <
    div class="commands">
    <
    input id="upload" type="button" value="上传" />
    </
    div>
    </
    div>
    </
    div>
    </
    div>

    </
    div>
    </
    form>

     

     

     

     

     

     

     

     

     

     

     

     

    upload.aspx:

    if (this.IsPostBack)
    {
    UploadInfo uploadInfo = this.Session["UploadInfo"] as UploadInfo;
    if (uploadInfo == null)
    {
    // 让父页面知道无法处理上传
    const string js = "window.parent.onComplete('error', '无法上传文件。请刷新页面,然后再试一次);";
    ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true);
    }
    else
    {
    // 让服务端知道我们还没有准备好..
    uploadInfo.IsReady = false;

    // 上传验证
    if (this.fileUpload.PostedFile != null && this.fileUpload.PostedFile.ContentLength > 0

    && this.fileUpload.PostedFile.ContentLength < 1048576)// 限制1M
    {
    // 设置路径
    string path = this.Server.MapPath(@"Uploads");
    string fileName = Path.GetFileName(this.fileUpload.PostedFile.FileName);

    // 上传信息
    uploadInfo.ContentLength = this.fileUpload.PostedFile.ContentLength;
    uploadInfo.FileName = fileName;
    uploadInfo.UploadedLength = 0;

    //文件存在 初始化...
    uploadInfo.IsReady = true;

    //缓存
    int bufferSize = 1;
    byte[] buffer = new byte[bufferSize];

    // 保存字节
    using (FileStream fs = new FileStream(Path.Combine(path, fileName), FileMode.Create))
    {
    while (uploadInfo.UploadedLength < uploadInfo.ContentLength)
    {
    //从输入流放进缓冲区
    int bytes = this.fileUpload.PostedFile.InputStream.Read(buffer, 0, bufferSize);
    // 字节写入文件流
    fs.Write(buffer, 0, bytes);
    // 更新大小
    uploadInfo.UploadedLength += bytes;

    // 线程睡眠 上传就更慢 这样就可以看到进度条了
    System.Threading.Thread.Sleep(100);
    }
    }

    // 删除.
    File.Delete(Path.Combine(path, fileName));

    // 让父页面知道已经处理上传完毕
    const string js = "window.parent.onComplete('success', '{0} 已成功上传');";
    ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", string.Format(js, fileName), true);
    }
    else
    {
    if (this.fileUpload.PostedFile.ContentLength >= 1048576)//1M
    {
    const string js = "window.parent.onComplete('error', '超出上传文件限制大小,请重新选择');";
    ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true);
    }
    else
    {
    const string js = "window.parent.onComplete('error', '上传文件出错');";
    ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true);
    }
    }
    uploadInfo.IsReady = false;
    }
    }

     

     

    代码就不贴完了 直接打包下载吧!

    有关上传的都归类在这里了:http://www.cnblogs.com/zengxiangzhan/category/269831.html

    目前 流行:
      百度 
     
     

     

     


    转载请注明本文地址: 文件上传 带进度条(多种风格)
    展开全文
  • spring mvc文件上传,通过监听器实现进度条
  • 上传进度条通常是由前面jquery加后端了脚本器脚本来实现了,今天我们介绍的是一款基本php+jQuery实现文件上传进度条效果的例子,具体细节如下。最近呢,一个项目一个进度条的效果出来,这个之前还真没过。刚好这...
  • 1.下载了一个“swfupload实现的带进度条批量上传”,放在VS2010中运行,提示“错误 1 未能加载类“weiyunERP.UI.SwfUpload.upfile”。 2.去找相应的组件什么的,看见有人提到fileprogress,命名空间,或者组件中...
  • AJAX文件上传进度条
  • APC实现方法: 安装APC,参照官方文档安装,可以使用PECL模块安装方法快速简捷,这里...配置php.ini,设置参数 apc.rfc1867=1 ,使APC支持上传进度条功能,在APC源码说明文档里面有说明 代码范例: 大文件(50G...
  • 文件上传进度条与图片类型检测

    千次阅读 2017-05-02 12:45:14
    今天要与大家分享的是文件上传功能。 其实上传文件没什么难得,只需要一个form表单,里面装一个input type=...进入重点,先说说文件上传进度条,最开始设计这个插件的时候,在网上找过,说用jquery提供的xhr能实现,当
  • 简单实现一个文件上传进度条

    千次阅读 2014-06-18 17:48:48
    新手初学web 文件上传做完了 进度了 没有进度条只有文字 不太好看 需要进度条 没有美工 网上很多的 进度条 需要图片 还有各种框架 看着好麻烦 只好自己弄一个 还挺简单的 没想象的那么复杂 分享一下  ...
  • 基于AJAX的文件上传显示进度条实现

    万次阅读 2013-09-15 15:14:50
    基于Ajax的文件上传要实现的功能要求,要在用户提交了上传按钮请求后,客户端其页面要显示文件上传进度条。  其整个功能时序图如图所示。  简单的说,要实现在客户端显示进度条,需要的是:当...
  • JS文件上传以及进度条实现

    万次阅读 2018-09-05 10:56:52
    这个标签可以完成文件上传的操作,这里就不细说,这里主要说一下进度条的实现。 想要实现进度条我们需要了解一个对象 XMLHttpRequest ProgressEvent接口 这个接口有3个属性,都是只读的。 ProgressEvent....
  • 1. 看到过很多人写的上传都封装了,尤其是...2. 自己写了一个flash上传的控件,带进度条,接口比较灵活。 3. 开放flash源码,高手可以搞的更好看些。 4. 如果有问题,请发邮件至我的邮箱:xiaohan_0305@hotmail.com
  • ajax+php文件上传进度条

    千次阅读 2018-04-08 11:09:09
    理论上来说此类的文件/图片上传插件已经很多了,但是在使用的过程中还是会遇到各种各样的问题,,兼容问题、后台问题~~等等,所以既然别人的轮子我用不好,那就自己动手造一个吧。本文中使用jq.ajax和php实现上传...
  • 该项目核心就是文件分块上传。前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题。 *如何分片; *如何合成一个文件; *中断了从哪个分片开始。 如何分,利用...
  • java上传文件的时候, 当我们在action中截获文件, 其实已经晚了, 这个时候 文件的临时文件已经传到服务器上了, 所以 本人利用apache的监听类 文件上传进度条, 大家参考
  • 上传进度条通常是由前面jquery加后端了脚本器脚本来实现了,今天我们介绍的是一款基本php+jQuery实现文件上传进度条效果的例子,具体细节如下。 最近呢,一个项目一个进度条的效果出来,这个之前还真没过。刚好...
  • http://www.oschina.net/code/snippet_12_1313 var progress_key = '4cd0f29463edb'; // this sets up the progress bar $(document).ready(function() { $("#uploadprogressbar").progressBar(); });...// f
  • springMVC上传文件 带有进度条

    千次阅读 2016-06-23 16:18:01
    文件上传,实现带进度条文件上传
  • 这个是个人在网上找到的一些案例结合起来的一个Struts2的文件上传,jar我就没拷上来了

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,410
精华内容 6,164
关键字:

文件上传怎么做进度条