Skip to content

Instantly share code, notes, and snippets.

Created March 18, 2014 03:26
Show Gist options
  • Save anonymous/9613036 to your computer and use it in GitHub Desktop.
Save anonymous/9613036 to your computer and use it in GitHub Desktop.
'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