index.html 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html lang="en">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
  5. <title>WebUploader演示 - 带裁剪功能 </title>
  6. <link rel="stylesheet" type="text/css" href="../../css/webuploader.css" />
  7. <link rel="stylesheet" type="text/css" href="./cropper.css" />
  8. <link rel="stylesheet" type="text/css" href="./style.css" />
  9. </head>
  10. <body>
  11. <div id="wrapper">
  12. <div class="uploader-container">
  13. <div id="filePicker">选择文件</div>
  14. </div>
  15. <!-- Croper container -->
  16. <div class="cropper-wraper webuploader-element-invisible">
  17. <div class="img-container">
  18. <img src="" alt="" />
  19. </div>
  20. <div class="upload-btn">上传所选区域</div>
  21. <div class="img-preview"></div>
  22. </div>
  23. </div>
  24. <script type="text/javascript" src="./jquery.js"></script>
  25. <script type="text/javascript" src="../../dist/webuploader.js"></script>
  26. <script type="text/javascript" src="./cropper.js"></script>
  27. <script type="text/javascript" src="./uploader.js"></script>
  28. <script>
  29. // 图片上传demo
  30. jQuery(function() {
  31. var $ = jQuery,
  32. $list = $('#fileList'),
  33. // 优化retina, 在retina下这个值是2
  34. ratio = window.devicePixelRatio || 1,
  35. // 缩略图大小
  36. thumbnailWidth = 100 * ratio,
  37. thumbnailHeight = 100 * ratio,
  38. // Web Uploader实例
  39. uploader;
  40. // 初始化Web Uploader
  41. uploader = WebUploader.create({
  42. // 自动上传。
  43. auto: true,
  44. // swf文件路径
  45. swf: BASE_URL + '/js/Uploader.swf',
  46. // 文件接收服务端。
  47. server: 'http://webuploader.duapp.com/server/fileupload.php',
  48. // 选择文件的按钮。可选。
  49. // 内部根据当前运行是创建,可能是input元素,也可能是flash.
  50. pick: '#filePicker',
  51. // 只允许选择文件,可选。
  52. accept: {
  53. title: 'Images',
  54. extensions: 'gif,jpg,jpeg,bmp,png',
  55. mimeTypes: 'image/*'
  56. }
  57. });
  58. // 当有文件添加进来的时候
  59. uploader.on( 'fileQueued', function( file ) {
  60. var $li = $(
  61. '<div id="' + file.id + '" class="file-item thumbnail">' +
  62. '<img>' +
  63. '<div class="info">' + file.name + '</div>' +
  64. '</div>'
  65. ),
  66. $img = $li.find('img');
  67. $list.append( $li );
  68. // 创建缩略图
  69. uploader.makeThumb( file, function( error, src ) {
  70. if ( error ) {
  71. $img.replaceWith('<span>不能预览</span>');
  72. return;
  73. }
  74. $img.attr( 'src', src );
  75. }, thumbnailWidth, thumbnailHeight );
  76. });
  77. // 文件上传过程中创建进度条实时显示。
  78. uploader.on( 'uploadProgress', function( file, percentage ) {
  79. var $li = $( '#'+file.id ),
  80. $percent = $li.find('.progress span');
  81. // 避免重复创建
  82. if ( !$percent.length ) {
  83. $percent = $('<p class="progress"><span></span></p>')
  84. .appendTo( $li )
  85. .find('span');
  86. }
  87. $percent.css( 'width', percentage * 100 + '%' );
  88. });
  89. // 文件上传成功,给item添加成功class, 用样式标记上传成功。
  90. uploader.on( 'uploadSuccess', function( file ) {
  91. $( '#'+file.id ).addClass('upload-state-done');
  92. });
  93. // 文件上传失败,现实上传出错。
  94. uploader.on( 'uploadError', function( file ) {
  95. var $li = $( '#'+file.id ),
  96. $error = $li.find('div.error');
  97. // 避免重复创建
  98. if ( !$error.length ) {
  99. $error = $('<div class="error"></div>').appendTo( $li );
  100. }
  101. $error.text('上传失败');
  102. });
  103. // 完成上传完了,成功或者失败,先删除进度条。
  104. uploader.on( 'uploadComplete', function( file ) {
  105. $( '#'+file.id ).find('.progress').remove();
  106. });
  107. });
  108. </script>
  109. </body>
  110. </html>