本来以为不能转,因为原作者在文章头部写:未经许可不得转载,但又在文末留下了,转载请保留地址。因此,先保留地址转载,再申请一下授权,原文地址是: http://blog.csdn.net/cuixiping/article/details/45932793
之所以转这个,是因为最近在处理上传的时候遇到了问题,原来xhr可以直接将file对象提交,如果用fileReader,出来的其实是base64的string,这时候怎么办是个问题。
好了不说废话,上内容。。。。
canvas转换为dataURL (从canvas获取dataURL)
XML/HTML代码
- var dataurl = canvas.toDataURL('image/png');
- var dataurl2 = canvas.toDataURL('image/jpeg', 0.8);
File对象转换为dataURL、Blob对象转换为dataURL
File对象也是一个Blob对象,二者的处理相同。
XML/HTML代码
- function readBlobAsDataURL(blob, callback) {
- var a = new FileReader();
- a.onload = function(e) {callback(e.target.result);};
- a.readAsDataURL(blob);
- }
- //example:
- readBlobAsDataURL(blob, function (dataurl){
- console.log(dataurl);
- });
- readBlobAsDataURL(file, function (dataurl){
- console.log(dataurl);
- });
dataURL转换为Blob对象
XML/HTML代码
- function dataURLtoBlob(dataurl) {
- var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
- bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
- while(n--){
- u8arr[n] = bstr.charCodeAt(n);
- }
- return new Blob([u8arr], {type:mime});
- }
- //test:
- var blob = dataURLtoBlob('data:text/plain;base64,YWFhYWFhYQ==');
dataURL图片数据绘制到canvas
先构造Image对象,src为dataURL,图片onload之后绘制到canvas
XML/HTML代码
- var img = new Image();
- img.onload = function(){
- canvas.drawImage(img);
- };
- img.src = dataurl;
File,Blob的图片文件数据绘制到canvas
还是先转换成一个url,然后构造Image对象,src为dataURL,图片onload之后绘制到canvas
利用上面的 readBlobAsDataURL 函数,由File,Blob对象得到dataURL格式的url,再参考 dataURL图片数据绘制到canvas
XML/HTML代码
- readBlobAsDataURL(file, function (dataurl){
- var img = new Image();
- img.onload = function(){
- canvas.drawImage(img);
- };
- img.src = dataurl;
- });
不同的方法用于构造不同类型的url (分别是 dataURL, objectURL(blobURL), filesystemURL)。这里不一一介绍,仅以dataURL为例。
filesystemURL不是指本地文件URL的形式(file:///….), 而是格式类似于 filesystem:http://... 的一种URL,支持沙盒文件系统的浏览器支持(目前仅Chrome)支持。
Canvas转换为Blob对象并使用Ajax发送
转换为Blob对象后,可以使用Ajax上传图像文件。
先从canvas获取dataurl, 再将dataurl转换为Blob对象
XML/HTML代码
- var dataurl = canvas.toDataURL('image/png');
- var blob = dataURLtoBlob(dataurl);
- //使用ajax发送
- var fd = new FormData();
- fd.append("image", blob, "image.png");
- var xhr = new XMLHttpRequest();
- xhr.open('POST', '/server', true);
- xhr.send(fd);
EOF--
整个世界清静 了
标题所说的问题可能早期用户都遇到过。但其实这个问题在官方也早就有解决方案了,不知道为什么还有人问起。
这其实是与:fxp/composer-asset-plugin 相关的一个BUG,你在global require的时候,用1.1的beta版就没问题了。
很简单就能发现这个问题了,你先:composer global require "fxp/composer-asset-plugin:~1.1.1",然后composer install就OK了。
其实你如果每次composer update报这个错,你就应该有警惕了:
XML/HTML代码
- Deprecation Notice: The Composer\Package\LinkConstraint\MultiConstraint class is deprecated, use Composer\Semver\Constraint\MultiConstraint instead. in phar:///usr/local/bin/compose
- r/src/Composer/Package/LinkConstraint/MultiConstraint.php:17
- Deprecation Notice: The Composer\Package\LinkConstraint\LinkConstraintInterface interface is deprecated, use Composer\Semver\Constraint\ConstraintInterface instead. in phar:///usr/l
- ocal/bin/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php:17
当然如果你操作完后还是没看到有任何反应,OK,先清除cache......
不多说,Over
OpenOpenSSH是openBSD项目组开发的,基于BSD协议。一般linux发行版自带Openssh。2008年7月出了5.1版。 openssh包含一套程序。scp替换rcp,sftp替换了ftp. 包含sshd和sftp server端。
如果远程为22端口,一切都好说。如果不是那就得看文档了
scp: 远程文件拷贝(scp指定了远端的非默认22端口):
scp -P 20022 src.tar.gz
scp -P 20022 .
scp -o port=60066 .
scp -P 60066 -r /home/zhouhh/src/.*
拷贝目录,-r是将目录下的目录递归拷贝。".*"是将隐藏文件也拷贝过去。需要先在远端创建好相应的目录。
scp -P 60066 -r *
最 后一个命令存在一个问题,就是如果172.16.22.30不是默认22端口,无法指定端口。即-P 指定非缺省的ssh端口时,对远程的拷贝,无法指定两个不同的端口。这应该是scp的命令缺陷。如果谁知道怎么指定两个远端的非缺省22端口的语法,请告 诉我。联系地址ablozhou[at]gmail.com。
scp的优点是使用简单,缺点是无法列出远端目录和改变目录。复杂一点的用法是用sftp。
sftp:
sftp -o port=60066
其中-o port选项指定非缺省的ssh端口。
Connecting to 192.168.12.12...
password:
Changing to: /home/zhouhh
sftp> pwd
Remote working directory: /home/zhouhh
在命令行模式下可以执行一系列命令
ls,cd,pwd,mkdir,rmdir,rm 等远端文件操作
lls,lcd,lpwd等本地操作。
!command 执行本地shell命令
!进入本地shell,exit再进入sftp的命令提示。
可以用help或"?"来查询所有的sftp支持的命令。
get 从远端下载文件
put 将本地文件上传到远程。
sftp配置,需要在/etc/ssh/sshd_config
配置文件增加sftp子系统:
Subsystem sftp /usr/libexec/openssh/sftp-server
然后重启sshd:
service sshd restart
swfupload这个库应该是很多很多人都在用,uploadify是其中的优化的漂亮的一个版本,虽然现在已经是版本号到了3了,但还是有很多人还在用着2。然而2一直有一个问题,如果你使用buttonText就是乱码,如果你使用buttonImage,那个image出来的效率就很低。
于是网上针对2有着一系列的更改和优化,大家都是认为那个encodeURI和escape惹的祸。于是觉得,如果设置buttonText : escape('中文'),是不是就好了吗?然而,这还是too young too simple了。
然后就有很多人改了fla文件,重编译成swf,于是世界就清静了。
我找了一份可以用的,直接下载即可。
uploadify-v2.1.4-www.7es.cn.rar
附件文件名还带有网址,我就不改了,反正解压下来还能用。如果中文还是乱码,那就:escape('中文') 吧(用buttonImage出来太慢了)
以下内容纯COPY
原文来自:http://hiraku.tw/2015/09/3969/
- 前兩天 OS X El Capitan 出了 GM Candidate,所以就升級上去了,雖然外觀上 El Capitan 跟 Yosemite 看起來差不多,但是我裝的不少東西馬上就不能用了,這邊列一下目前遇到的問題跟解決方法,如果後面陸續遇到更多會持續補充。
-
- 首先最重要的是,El Capitan 增加了一個叫做 System Integrity Protection (簡稱 SIP ,或稱 rootless, 在 iOS 9 裡面也有) 的保護機制,SIP 最主要功能就是防止對系統程式的 code injection,還有使用未被 Apple 認可的 kext。
-
- 但是要關閉 SIP 也不難,只要進去 Recovery Mode (開機按著 Command + R 直接進入,千萬不要用按著 option 的方式選擇,否則會找不到 csrutil 的指令),用終端機輸入
-
- csrutil disable
- 之後重新開機,就可以關閉 SIP 了。若有使用到以下說明要關閉 SIP 的軟體,就必須按照上述方法操作,才能正常使用該軟體之功能。而開啟 SIP 也很簡單,輸入
-
- csrutil enable
- 特別要注意的是,csrutil 的設定實際上是在 NVRAM 中設定參數,所以當你重置 NVRAM (開機按住 command + option + P + R) 之後,SIP 會變回開啟狀態,所以要再重新關閉一次,切記切記!
-
-
-
- 而以下就是我目前遇到在 El Capitan 必須特別留意的軟體:
-
- TotalFinder:必須在 1.7.1 以上,並且關閉 SIP。 (1.7.1 beta 載點)
- XtraFinder:官網下載最新版,並且關閉 SIP。
- Bartender:必須在 1.3.2 版以上(如果你無法升級,試著開啟 beta 版檢查),暫時關閉 SIP (成功安裝後可以再次開啟)
- Homebrew:如果出現無法編譯的問題,就去下載 Xcode 7,開啟並安裝 command line tools 之後就能解決
- iStat Menus:必須在 5.11 版以上 (5.11 beta 載點),但因為在 5.11 之後,iStat Menus 的每個元件並不是分開的,而是整個合併為一大塊元件,所以目前不能把其他項目放置在 iStat Menus 元件的中間(例如:以前可以 RAM → Spotlight → CPU 這樣穿插放,但現在不行,iStat Menus 的項目必須連續。)如果要改各個項目的順序,要在 iStat Menus 裡面的設定改,不能直接在 menubar 拖曳。
- Sequel Pro:如果用 SSH 連接的話會出錯,去抓 Nightly Builds 就可以了
- theos:iOS 9 SDK 跟 theos 裡面的 header 似乎有些問題,如果有問題的話去用 iOS 8.4 的 SDK 或者抓 Xcode 6.4 回來編譯。(目前測試如果用到 Springboard 跟 UIKit2.h 的 header 好像會出錯)
- Parallels Desktop:必須在 PD 10 (含) 以上
- Fantastical 2:如果不能用下載 beta 看看(載點)(感謝 @katerjacob 補充)
- CleanMyMac 3:必須在 3.1 beta 以上
- 以上就是目前遇到的問題,但我覺得除了 iStat Menus 不能照以前的方法用之外(其實原因是因為 menucracker 失效了),其他不是太大問題。而 GM 版本雖然不是最終版本(這次是 GM Candidate,跟去年一樣,有可能會有 GM2、GM3),但是穩定性還算 OK(大家都知道,OS X 要真正穩定必須等到 10.x.2 之後…),所以如果有開發者帳號的,也可以考慮趕緊備份資料,準備上來 El Capitan 了!
所幸,上述程序我几乎都不用。除了homebrew/parallels desktop。。。这两个的问题我已经解决了。黑黑
如果你们有遇到或者要用上述程序的,先做好心里准备