PC 側でアップロードされるほとんどのファイルは、Flash を導入しても問題ありません。ただし、モバイル側でさまざまな冗長なプラグインが使用されている場合、プロジェクトは無駄になる可能性があります。 H5 には既に関連するインターフェイスが備わっているため、画像をアップロードする機能を持たせる必要があります。当然、実装には H5 を使用することが優先されます。
使用される主なテクノロジーは次のとおりです:
ajax
ファイルリーダー
フォームデータ
HTML 構造:
XML/HTML コードコンテンツをクリップボードにコピー
-
<div class="カメラエリア">
-
<form enctype="multipart/フォームデータ" メソッド="post">
-
<入力 type="file" 名前="fileToUpload" クラス="fileToUpload" accept="image/*" キャプチャ="カメラ"/>
-
<div class="upload-進捗"><スパン>スパン>div>
-
フォーム>
-
<div class="親指" >div>
-
div>
-
パッケージ化されたupload.jsはzeptoに依存します
JavaScript コードコンテンツをクリップボードにコピーします
-
(関数($) {
-
$.extend($.fn, {
-
fileUpload: 関数(opts) {
-
this.each(function() {
-
var $self = $(this);
-
var doms = {
-
"fileToUpload": $self.find(".fileToUpload"),
-
"thumb": $self.find(".thumb"),
-
"progress": $self.find(".upload-progress")
-
};
-
var 楽しい = {
-
-
"fileSelected": 関数() {
-
var files = (doms.fileToUpload)[0].files;
-
var count = files.length;
-
for (var index = 0; index < count; index ) {
-
var file = files[index];
-
var fileSize = 0;
-
if (file.size > 1024 * 1024)
-
fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() 'MB';
-
else
-
fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() 'KB';
-
}
-
funs.uploadFile();
-
}、
-
-
UploadFile: function() {
-
var fd = new FormData();
-
var files = (doms.fileToUpload)[0].files;
-
var count = files.length;
for-
(var インデックス = 0; インデックス < カウント; インデックス ) {
var-
ファイル = ファイル[インデックス];
fd.append(opts.file, file);//フォームデータにファイルを追加
-
//アップロードする前に画像をプレビューするか、他の方法でテキストをプレビューします
-
var- xhr =
new-
XMLHttpRequest();
xhr.upload.addEventListener("進行状況", funs.uploadProgress, false
);- // アップロードの進行状況を監視します
xhr.addEventListener("load"false
); >
-
xhr.addEventListener("error", opts.uploadFailed, false); >
xhr.open(-
"POST", opts.url);
xhr.send(fd)
}、
-
-
プレビューイメージ: 関数(ファイル) {
-
var ギャラリー = doms.thumb;
-
var img = document.createElement("img");
img.file = ファイル
-
doms.thumb.html(img);
-
//FileReader メソッドを使用して画像コンテンツを表示します -
var-
Reader = new FileReader();
Reader.onload = (function
(aImg) { -
return
-
関数(e) {
aImg.src = e.target.result;
- })(img);
Reader.readAsDataURL(ファイル) -
}、-
UploadProgress: - 関数
(evt) { -
-
if (evt.lengthComputable) {
-
varpercentComplete = Math.round(evt.loaded * 100 / evt.total);
doms.progress.html(percentComplete.toString()
'%'-
);
}、
-
"uploadComplete":
関数-
(evt) {
-
アラート(evt.target.responseText)
-
};
-
doms.fileToUpload.on("変更", function() {
-
doms.progress.find("スパン").width("0"); >
- funs.fileSelected();
- });
- });
- }
- });
- })(ゼプト) ;
呼び出し方法:
JavaScript コードコンテンツをクリップボードにコピーします
-
$(".カメラエリア").fileUpload({
- "url": "savetofile.php",
- "ファイル": "myFile"
- });
PHP 部分:
PHP コードコンテンツをクリップボードにコピーします
-
-
if (isset($_FILES['myFile'])) {
- // 例:
- writeLog($_FILES);
move_uploaded_file(
- $_FILES['myFile']['tmp_name']、"uploads/" . $_FILES['myFile']['名前']);
エコー
- '成功しました';
}
- function writeLog(
- $log){
if(
- is_array($log) | | is_object($log)){
$log = json_encode(
- $log);
}
$log
- = $log
- ."rn";
file_put_contents
- ('log.log'
- , $log,FILE_APPEND);
}
?>
-
以上がこの記事の全内容です。皆様の学習のお役に立てれば幸いです。
原文: http://www.cnblogs.com/hutuzhu/p/5254532.html