Created
March 18, 2014 03:26
-
-
Save anonymous/9613036 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict' | |
linedesignerControllers = angular.module('linedesignerApp') | |
linedesignerControllers.controller 'MainCtrl', ($scope) -> | |
linedesignerControllers.controller 'UploadPhotoCtrl', ['$scope', 'Photo', ($scope, Photo) -> | |
uploader = Qiniu.uploader | |
runtimes: 'html5,flash,html4' #上传模式,依次退化 | |
browse_button: 'holder' #上传选择的点选按钮,**必需** | |
#uptoken_url: '/token' #Ajax请求upToken的Url,**必需**(服务端提供) | |
uptoken_url: 'http://0.0.0.0:3212/qiniu_uptoken' #Ajax请求upToken的Url,**必需**(服务端提供) | |
domain: 'http://linedesigner.qiniudn.com/' #bucket 域名,下载资源时用到,**必需** | |
container: 'container' #上传区域DOM ID,默认是browser_button的父元素, | |
max_file_size: '100mb' #最大文件体积限制 | |
#flash_swf_url: 'js/plupload/Moxie.#f', #引入flash,相对路径 | |
max_retries: 3 #上传失败最大重试次数 | |
dragdrop: true #开启可拖曳上传 | |
drop_element: 'container' #拖曳上传区域元素的ID,拖曳文件或文件夹后可触发上传 | |
chunk_size: '4mb' #分块上传时,每片的体积 | |
auto_start: true #选择文件后自动上传,若关闭需要自己绑定事件触发上传 | |
init: | |
#'FilesAdded': (up, files) -> | |
#console.log 'FilesAdded' | |
#plupload.each files, (file) -> #文件添加进队列后,处理相关的事情 | |
#$.each files, (i, file) -> | |
# up.start() | |
'BeforeUpload': (up, file) -> | |
reader = new FileReader | |
reader.onload = (e)-> | |
ext = file.name.split('.').pop() | |
if !ext | |
throw 'file must have ext, file name: ' + file.name | |
file.name = (SparkMD5.ArrayBuffer.hash e.target.result)# + '.' + ext | |
op = up.getOption() | |
op.multipart_params.key = (SparkMD5.ArrayBuffer.hash e.target.result)# + '.' + ext | |
up.setOption(op) | |
console.log up.getOption() | |
#up.getOption().multipart_params.key = SparkMD5.ArrayBuffer.hash e.target.result | |
reader.readAsArrayBuffer file.getNative() | |
# TODO: 这里逼不得已,把本来的异步操作变成了同步 | |
waitMd5 = -> | |
if reader.readyState != FileReader.DONE | |
console.log 'wait' | |
setTimeout(waitMd5, 200) | |
return | |
waitMd5() | |
#'UploadProgress': (up, file) -> #每个文件上传时,处理相关的事情 | |
'FileUploaded': (up, file, info) -> | |
domain = up.getOption('domain') | |
res = $.parseJSON(info) | |
sourceLink = domain + res.key | |
console.log sourceLink | |
console.log res.hash | |
# TODO: name之类的之后再搞 | |
p = Photo.create | |
name: res.key | |
image_url: sourceLink | |
type: 1 # TODO | |
meta: '.jpg' | |
'Error': (up, err, errTip) -> #上传出错时,处理 | |
'UploadComplete': -> #队列文件处理完毕后,处理相关的事情 | |
#p1 = Photo.get({id:1}) | |
$scope.onDropUpload = (file)-> | |
#console.log 'UploadPhoto controller' + file | |
# actual upload file to qiniu | |
] | |
linedesignerControllers.directive 'dropFile', ($document) -> | |
restrict: 'EA' | |
scope: | |
dropFile: '=' | |
link: (scope, element, attrs) -> | |
onDrop = scope.dropFile | |
onDragOver = (e) -> | |
e.preventDefault | |
#$('body').addClass("dragOver") | |
console.log('drag over~~~~~~~~') | |
onDragLeave = (e) -> | |
e.preventDefault | |
#$('body').removeClass("dragOver") | |
console.log('drag leave!!!!!!!!') | |
$document.bind "dragover", onDragOver | |
element.bind "dragleave", onDragLeave | |
element.bind "drop", (e) -> | |
onDragLeave e | |
e.preventDefault | |
# TODO: only deal with 1 file | |
onDrop e.originalEvent.dataTransfer.files[0] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment