- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章使用jQuery Uploader显示文件上传进度由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
请到 Download 下载资源 的 JQueryElement 示例下载一节下载示例代码 本文将说明 Uploader 控件的功能以及使用过程中的注意事项和技巧, 目录如下: * 准备 * 创建保存页面 * 添加 FileUpload 控件 * 设置 EnableSessionState * 调用 Uploader 的 Save 方法 * 创建获取进度的页面 * 创建上传页面 * 设置保存页面 * 设置获取进度的页面 * 上传 * 隐藏保存页面 。
准备 请确保已经在 Download 下载资源 中的 JQueryElement.dll 下载一节下载 JQueryElement 最新的版本. 请使用指令引用如下的命名空间: 。
复制代码代码如下
<%@ Register Assembly="zoyobar.shared.panzer.JQueryElement" Namespace="zoyobar.shared.panzer.ui.jqueryui.plusin" TagPrefix="je" %> <%@ Register Assembly="zoyobar.shared.panzer.JQueryElement" Namespace="zoyobar.shared.panzer.web.jqueryui" TagPrefix="je" %> 。
除了命名空间, 还需要引用 jQueryUI 的脚本和样式, 在 Download 下载资源 的 JQueryElement.dll 下载一节下载的压缩包中包含了一个自定义样式的 jQueryUI, 如果需要更多样式, 可以在 http://jqueryui.com/download 下载:除了命名空间, 还需要引用 jQueryUI 的脚本: 。
复制代码代码如下
<link type="text/css" rel="stylesheet" href="[样式路径]/jquery-ui-<version>.custom.css" /> <script type="text/javascript" src="[脚本路径]/jquery-<version>.min.js"></script> <script type="text/javascript" src="[脚本路径]/jquery-ui-<version>.custom.min.js"></script> 。
创建保存页面 保存页面是一个简单的页面, 主要完成文件的保存工作, 保存页面不会自己提交, 而是由上传页面提交. 添加 FileUpload 控件 首先, 为保存页面添加 FileUpload 控件: 。
复制代码代码如下
<form id="formFileUpload" runat="server"> 上传: <asp:FileUpload ID="file" runat="server" /> </form> 。
也可以添加 type 属性为 file 的 input 元素: 。
复制代码代码如下
<form id="formFileUpload" runat="server" enctype="multipart/form-data"> 上传: <input type="file" id="file" runat="server" /> </form> 。
如果使用 input 元素, 则可能需要设置 form 的 enctype 属性为 multipart/form-data. 设置 EnableSessionState 需要设置保存页面的 EnableSessionState 为 ReadOnly, 这样可以在保存页面保存文件时, 请求获取进度的页面. 这主要是由于, ASP.NET 顺序执行可以读写 Session 的页面: 。
复制代码代码如下
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FileUpload.aspx.cs" Inherits="uploader_FileUpload" EnableSessionState="ReadOnly" %> 。
调用 Uploader 的 Save 方法 在保存页面的 Page_Load 方法中, 调用 Uploader 控件的 Save静态方法来保存文件: 。
复制代码代码如下
protected void Page_Load ( object sender, EventArgs e ) { if ( this.IsPostBack && this.file.HasFile ) // TODO: 这里设置 waitSecond 参数是为了在测试时显示上传的进度, // 在实际的使用中请不要设置 waitSecond, 并调整 bufferSize 为一个合理的值. Uploader.Save ( this.Server.MapPath ( @"~/uploader/photo.jpg" ), this.file.PostedFile, this.Session["myphotouploadinfo"] as Uploader.UploadInfo, 1, 1 ); // Uploader.Save ( // this.Server.MapPath ( @"~/uploader/photo.jpg" ), // this.file.PostedFile, // this.Session["myphotouploadinfo"] as Uploader.UploadInfo ); } 。
代码中, 通过 IsPostBack 和 HasFile 属性判断在用户提交了文件后, 才进行保存. Save 方法的格式为 Save ( string filePath, HttpPostedFile postedFile, Uploader.UploadInfo uploadInfo, int bufferSize, int waitSecond ), filePath 参数是文件保存的完整路径, postedFile 参数是提供文件控制的 HttpPostedFile 对象, 可以从 FileUpload 控件获取, uploadInfo 参数是保存上传进度信息的对象, bufferSize 参数是保存文件时的缓存大小, 默认 128kb 保存一次, 最后一个参数 waitSecond 只在测试时使用, 表示缓存被保存后的等待时间, 这样可以确保看到进度. 上传大于 4mb 的文件, 请修改 web.config 的 maxRequestLength, 可以参考 http://msdn.microsoft.com/zh-cn/library/e1f13641(v=vs.71).aspx. 创建获取进度的页面 包含进度信息的对象 Uploader.UploadInfo 被保存在 Session 中, 因此可以随时从 Session中获取进度信息: 。
复制代码代码如下
<%@ WebHandler Language="C#" Class="uploader_getprec" %> using System.Collections.Generic; using System.Web; using System.Web.Script.Serialization; using System.Web.SessionState; using zoyobar.shared.panzer.ui.jqueryui.plusin; public class uploader_getprec : IHttpHandler, IReadOnlySessionState { public void ProcessRequest ( HttpContext context ) { context.Response.ContentType = "text/javascript"; context.Response.Cache.SetNoStore ( ); Uploader.UploadInfo info = context.Session["myphotouploadinfo"] as Uploader.UploadInfo; SortedDictionary<string, object> json = new SortedDictionary<string, object> ( ); if ( null == info ) json.Add ( "prec", "-" ); else { json.Add ( "prec", info.Percent ); json.Add ( "total", info.ContentLength ); json.Add ( "posted", info.PostedLength ); if ( info.Percent == 100 ) json.Add ( "url", "photo.jpg" ); /* * { * "prec": 20.23 * "total": 2000, * "posted": 2 * } * */ } context.Response.Write ( new JavaScriptSerializer ( ).Serialize ( json ) ); } 。
需要注意的是, uploader_getprec 实现了接口 IReadOnlySessionState, 而不是 IRequiresSessionState. 原因也是和设置 EnableSessionState 为 ReadOnly 类似的. 至于如何返回 JSON 数据, 请参考 在不同的 .NET 版本中返回 JSON. 创建上传页面 最后一步就是创建一个上传页面, 在页面中添加 Uploader控件: 。
复制代码代码如下
<je:Uploader ID="uploader" runat="server" IsVariable="true" UploadUrl="FileUpload.aspx" ProgressUrl="getprec.ashx" ProgressChanged=" function(data){ if(-:data.prec == '-') $('#prec').text('没有进度!'); else if(-:data.prec == 100){ $('#prec').text('完成, 图片路径为: ' + -:data.url); pb.hide(); $('#photo').show().attr('src', -:data.url); } else{ $('#prec').text(-:data.posted + ' bytes/' + -:data.total + ' bytes, ' + -:data.prec + '%'); pb.progressbar('option', 'value', -:data.prec); } } "> </je:Uploader> <je:Button ID="cmdUpload" runat="server" IsVariable="true" Label="开始" Click=" function(){ cmdUpload.hide(); uploader.__uploader('hide').__uploader('upload'); pb.show(); }"> </je:Button> 。
设置保存页面 通过 Uploader 的 UploadUrl 属性, 可以选择保存页面, 示例中, 选择了页面 FileUpload.aspx, 这将自动生成一个 iframe 元素, iframe 的 src 属性指向 FileUpload.aspx 页面. 也可以自定义一个 iframe, 然后通过 Upload属性选择此 iframe: 。
复制代码代码如下
<iframe id="myIFrame" src="FileUpload.aspx"></iframe> <je:Uploader ID="uploader" runat="server" IsVariable="true" Upload="#myIFrame" ... > </je:Uploader> 。
设置获取进度的页面 通过属性 ProgressUrl 和 ProgressChanged 可以获取并显示上传进度, ProgressUrl 表示返回进度信息的页面地址, ProgressChanged 则用于处理返回的进度等信息. 此外 ProgressInterval 属性表示查询进度的时间间隔, 默认为 1000 毫秒. 上传 调用 uploader 的 upload方法, 即可触发上传操作: 。
复制代码代码如下
<je:Button ID="cmdUpload" runat="server" IsVariable="true" Label="开始" Click=" function(){ uploader.__uploader('upload'); }"> </je:Button> 。
默认情况下将对保存页面的第一个表单执行 submit 操作, 可以通过 UploadForm 属性来调整需要提交的表单的索引. 隐藏保存页面 调用 uploader 的 hide方法, 即可隐藏保存页面: 。
复制代码代码如下
uploader.__uploader('upload'); 。
。
。
JQueryElement 是开源共享的代码, 可以在 http://code.google.com/p/zsharedcode/wiki/Download 页面下载 dll 或者是源代码. 。
实际过程演示: http://www.tudou.com/programs/view/-Zvwz5xsih8/, 建议全屏观看. 。
欢迎访问 panzer 开源项目, http://zsharedcode.googlecode.com/ , 其中包含了 IEBrowser 控制 WebBrowser 执行各种 js 和 jQuery 脚本以及录制功能 和 jQueryUI 的 Asp.net 控件 JQueryElement, 微博: http://t.qq.com/zoyobar 。
最后此篇关于使用jQuery Uploader显示文件上传进度的文章就讲到这里了,如果你想了解更多关于使用jQuery Uploader显示文件上传进度的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我的Angular-Component位于一个flexbox(id =“log”)中。可以显示或隐藏flexbox。 我的组件内部有一个可滚动区域,用于显示日志消息。 (id =“message-li
我真的很困惑 有一个 phpinfo() 输出: MySQL 支持 启用 客户端 API 版本 5.5.40 MYSQL_MODULE_TYPE 外部 phpMyAdmin 显示: 服务器类型:Mar
我正在研究这个 fiddle : http://jsfiddle.net/cED6c/7/我想让按钮文本在单击时发生变化,我尝试使用以下代码: 但是,它不起作用。我应该如何实现这个?任何帮助都会很棒
我应该在“dogs_cats”中保存表“dogs”和“cats”各自的ID,当看到数据时显示狗和猫的名字。 我有这三个表: CREATE TABLE IF NOT EXISTS cats ( id
我有一个字符串返回到我的 View 之一,如下所示: $text = 'Lorem ipsum dolor ' 我正在尝试用 Blade 显示它: {{$text}} 但是,输出是原始字符串而不是渲染
我无法让我的链接(由图像表示,位于页面左侧)真正有效地显示一个 div(包含一个句子,位于中间)/单击链接时隐藏。 这是我的代码: Practice
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
最初我使用 Listview 来显示 oracle 结果,但是最近我不得不切换到 datagridview 来处理比 Listview 允许的更多的结果。然而,自从切换到数据网格后,我得到的结果越来越
我一直在尝试插入一个 Unicode 字符 ∇ 或 ▽,所以它显示在 Apache FOP 生成的 PDF 中。 这是我到目前为止所做的: 根据这个基本帮助 Apache XSL-FO Input,您
我正在使用 node v0.12.7 编写一个 nodeJS 应用程序。 我正在使用 pm2 v0.14.7 运行我的 nodejs 应用程序。 我的应用程序似乎有内存泄漏,因为它从我启动时的大约 1
好的,所以我有一些 jQuery 代码,如果从下拉菜单中选择了带有前缀 Blue 的项目,它会显示一个输入框。 代码: $(function() { $('#text1').hide();
当我试图检查 Chrome 中的 html 元素时,它显示的是 LESS 文件,而 Firefox 显示的是 CSS 文件。 (我正在使用 Bootstrap 框架) 如何在 Chrome 中查看 c
我是 Microsoft Bot Framework 的新手,我正在通过 youtube 视频 https://youtu.be/ynG6Muox81o 学习它并在 Ubuntu 上使用 python
我正在尝试转换从 mssql 生成的文件到 utf-8。当我打开他的输出 mssql在 Windows Server 2003 中使用 notepad++ 将文件识别为 UCS-2LE我使用 file
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在尝试执行单击以打开/关闭一个 div 的功能。 这是基本的,但是,点击只显示 div,当我点击“关闭”时,没有任何反应。 $(".inscricao-email").click(function
假设我有 2 张卡片,屏幕上一次显示一张。我有一个按钮可以用其他卡片替换当前卡片。现在假设卡 1 上有一些数据,卡 2 上有一些数据,我不想破坏它们每个上的数据,或者我不想再次重建它们中的任何一个。
我正在使用 Eloquent Javascript 学习 Javascript。 我在 Firefox 控制台上编写了以下代码,但它返回:“ReferenceError:show() 未定义”为什么?
我正在使用 Symfony2 开发一个 web 项目,我使用 Sonata Admin 作为管理面板,一切正常,但我想要做的是,在 Sonata Admin 的仪表板菜单上,我需要显示隐藏一些菜单取决
我试图显示一个div,具体取决于从下拉列表中选择的内容。例如,如果用户从列表中选择“现金”显示现金div或用户从列表中选择“检查”显示现金div 我整理了样本,但样本不完整,需要接线 http://j
我是一名优秀的程序员,十分优秀!