2012
Dec
05

YUI 的档案上传,必需 require uploader 这个 module,也就是使用 YUI().use('uploader'),这个 module 有提供「单一档案选择」、「多个档案选择」、「档案传输」、「进度条」等资讯。

为了完成多个档案选择的功能,YUI 会自动 include HTML5Flash 这两个 YUI Module ,如果你使用的 Browser 有HTML5 的功能,那 YUI 就会使用 HTML5 来实做档案上传的功能,若是你的 Browser 没办法执行 HTML5 的功能,YUI 就会使用 Flash 来实做档案上传,所以从 IE6 以上的 Browser 都可以使用这个 uploader。

YUI uploader 虽然有提供很多资讯,但是没有提供 UI 介面,所以我实做一个有进度条上传档案的 yFileUploader Module。

上传按钮的范例 (选取一个 1MB 左右的档案,就可以比较清楚的看到上传进度条)

程式原始码

第一步是先定义 html tag ,必需给一个按钮的 div 与 进度条的 div ,我分别各给一个 id: btn , progressBar。

定义上传按钮与进度条要出现的 HTML Tag
  1. <div id="uploaderDemo" style="width:300px;margin:0 auto;">
  2. <div id="btn"></div>
  3. <div id="progressBar" ></div>
  4. </div>

接著 New FileUploader ,必指定按钮与进度条的尺寸,最后要指定一个伺服器接收档案的 url ,我的范例因为不会真的把档案传到伺服器,所以指定一个存在的 html 即可(做假!!)。

New and Render FileUploader button
  1. <script src="http://yui.yahooapis.com/3.7.3/build/yui/yui-min.js"></script>
  2. <script src="/filemanage/blog_files/yFileLoader.js"></script>
  3. <script>
  4. YUI().use("node","yFileUploader" , function(Y){
  5. if (Y.Uploader.TYPE != "none" && !Y.UA.ios) {
  6. var url = "/filemanage/blog_files/yFileLoader.js";//server url
  7. fileUploader = new Y.yFileUploader({
  8. width: "275px",
  9. height: "35px",
  10. progressBarWidth:270,
  11. progressBarHeight:25,
  12. progressBarContainer:"#uploaderDemo #progressBar",
  13. multipleFiles: false,
  14. swfURL: "http://yui.yahooapis.com/3.7.3/build/uploader/assets/flashuploader.swf?t=" + Math.random(),
  15. uploadURL: url,
  16. simLimit: 1,
  17. withCredentials: false,
  18. selectButtonLabel:"上传档案",
  19. container:"#uploaderDemo #btn"
  20. });
  21. fileUploader.render("#uploaderDemo #btn");
  22. }
  23. });
  24. </script>

程式下载


回應 (Leave a comment)