PC端上傳文件多半用插件,引入flash都沒關係,但是移動端要是還用各種冗餘的插件估計得被噴死,項目裡面需要做圖片上傳的功能,既然H5已經有相關的接口且相容性良好,當然優先考慮用H5來實現。
用的技術主要是:
ajax
FileReader
FormData
HTML結構:
XML/HTML Code複製內容到剪貼簿
- div class=class=class=
」 >- >
form enctype method="post"
- >"post">"post"> >
input type type type類型 name="fileToUpload" >"fileToUpload" accept="image/*"
- capture="camera"/>
div div div div div div
- div div div
- >span>span >div>
-
form> 🎜>>
- 🎜>>
div
class
class>div>
div>
已經封裝好的upload.js,依賴zepto
JavaScript Code複製內容到剪貼簿
-
(函數($) {
-
$.extend($.fn, {
-
檔案上傳:函數(選取){
-
這個.each(函數() { >
-
var $self = $(這個這這個
-
var doms = {
-
"fileToUpload": $self.find(: $self.find(
: $self.find(-
>
"拇指": $self.find( >
- 「進度」: $self.find(
};
var-
有趣 = {
-
//選擇文件,以取得檔案大小,並在此取得檔案格式,並可限制使用者上傳未要求格式的檔案
- "fileSelected":
- var files = (doms.fileToUpload)[0]. files = (doms.fileToUpload)[0]. files = (doms.fileToUpload)[0]. files = (doms.fileToUpload)[0]. files = (doms.fileToUpload)[0]。
- var count = files.length;
for
- (
var
- file =
var fileSize = 0; fileSize = 0; fileSize = 0;
-
if (檔案大小 > 1024
- fileSize = (Math.round(file.size * 100 / (1024 ';
- 其他
fileSize = (Math.round(file.size * 100 / 1024) / 100).* 100 / 1024) / 100). 🎜>;
-
}
-
funs.uploadFile();
-
},
-
-
uploadFile: function() {
- () {
var fd = fd =
-
var
files = (doms.fileToUpload)[0].files;
-
var count = files.length;
-
for (
var
- file =
fd.append(opts.file, file);//將檔案加入表單資料>
funs.previewImage(file);
- //上傳前預覽圖片,也可透過其他方式預覽
}
- var xhr = xhr.upload.addEventListener(
"progress"-
, //監聽上傳進度
-
xhr.addEventListener("load", funs.upload
xhr.addEventListener(-
"error", opts.uploadFailed, > 🎜>
xhr.open("POST",
xhr.send(fd);
- },
-
-
previewImage: function(file) {
-
var gallery =
-
var img = . 🎜>
img.file = file;
doms.thumb.html(img);
-
// 使用FileReader方法顯示圖片內容 -
-
var
reader = - reader.onload = (function return
aImg.src = e.target.result;
};
-
})(img);
reader.readAsDataURL(file);
},
- uploadProgress:
function- (evt) {
(evt) {
-
if-
(evt.lengthComp
-
- var percentComplete Math。 🎜>
doms.progress.html(percentComplete.toString() '%'
-
}
},
-
"uploadComplete":
- function: function
alert(evt.target.responseText)
-
}
-
};
-
doms.fileToUpload.on("change", doms.progress.find("span"
).width(-
>
funs.fileSelected();
});
- });
- }
- });
- })(Zepto);
-
呼叫方法:
-
JavaScript Code
複製內容到剪貼簿
$(".camera-area"
).fileUpload({
-
"url": "savetofile.php"
-
"savetofile.php"
"file":
"myFile"- : "myFile": "myFile"
});
-
PHP部分:
PHP Code
複製內容到剪貼簿
if
(isset($_FILES['my🎜>['my🎜>'my> 🎜>])) {
// Example:
writeLog(
$_FILES);
move_uploaded_file(
$_FILES['myFile'['myFile'], "uploads/" . $_FILES[$_FILES[[m >]['name']);
echo 'successful';
}
function writeLog($log){ $log
){ $log){ $log){ $log){ $log){ $log){
if(
is_arrayis_object($log)){
$log
= json_encode($log }
$log =
$log.
$log。;
file_put_contents(
'log.log', 🎜>,FILE_APPEND);
}
?>
以上就是本文的全部內容,希望對大家的學習有所幫助。
原文:http://www.cnblogs.com/hutuzhu/p/5254532.html