html5ajax圖片上傳
⑴ ajax 不能傳輸圖片數據嗎
ajax不是新技術,是多種技術的雜種,iframe,flash都可以上傳文件,所以說,ajax是可以上傳文件滴!
⑵ jquery ajax多圖上傳顯示怎麼寫
首先我們在頁面上放置個上傳按鈕,使用POST提交到ajax.php。#ul_pics 用來顯示上傳完畢後的圖片。
<a class="btn" id="btn">上傳圖片</a> 最大500KB,支持jpg,gif,png格式。
<ul id="ul_pics" class="ul_pics clearfix"></ul>
接著,載入jQuery.js和plupload.full.min.js插件。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="plupload/plupload.full.min.js"></script>
當點擊按鈕「上傳圖片」後,彈出選擇文件對話框,按 "ctrl" 選擇多圖片上傳。然後調用 uploader.start() 方法,開始上傳。上傳中間過程我們可以用 UploadProgress 方法來顯示文件進度,最後通過 FileUploaded 來顯示對應的圖片。通過瀏覽器控制台,會發現上傳一張圖片,會向後台ajax.php請求一次。
var uploader = new plupload.Uploader({ //創建實例的構造方法
runtimes: 'html5,flash,silverlight,html4',
//上傳插件初始化選用那種方式的優先順序順序
browse_button: 'btn',
// 上傳按鈕
url: "ajax.php",
//遠程上傳地址
flash_swf_url: 'plupload/Moxie.swf',
//flash文件地址
silverlight_xap_url: 'plupload/Moxie.xap',
//silverlight文件地址
filters: {
max_file_size: '500kb',
//最大上傳文件大小(格式100b, 10kb, 10mb, 1gb)
mime_types: [ //允許文件上傳類型
{
title: "files",
extensions: "jpg,png,gif"
}]
},
multi_selection: true,
//true:ctrl多文件上傳, false 單文件上傳
init: {
FilesAdded: function(up, files) { //文件上傳前
if ($("#ul_pics").children("li").length > 30) {
alert("您上傳的圖片太多了!");
uploader.destroy();
} else {
var li = '';
plupload.each(files,
function(file) { //遍歷文件
li += "<li id='" + file['id'] + "'><div class='progress'><span class='bar'></span><span class='percent'>0%</span></div></li>";
});
$("#ul_pics").append(li);
uploader.start();
}
},
UploadProgress: function(up, file) { //上傳中,顯示進度條
$("#" + file.id).find('.bar').css({
"width": file.percent + "%"
}).find(".percent").text(file.percent + "%");
},
FileUploaded: function(up, file, info) { //文件上傳成功的時候觸發
var data = JSON.parse(info.response);
$("#" + file.id).html("<div class='img'><img src='" + data.pic + "'/></div><p>" + data.name + "</p>");
},
Error: function(up, err) { //上傳出錯的時候觸發
alert(err.message);
}
}
});
uploader.init();
⑶ HTML5 做的移動 web app 怎樣實現從本地上傳圖片
當然可以,不過只能從相冊里傳
⑷ 如何使用html5實現拍照上傳應用
單純HTML5沒法做 需要後台技術 你可以看下關於.NET JSP PHP 最新的NODEJS
必定有很成熟的調用攝像頭拍照的介面或庫。
你可能需要系統學習的有
HTML5
CSS3
JAVASCRIPT JQUERY等
選擇一項你喜歡的後台語言。
⑸ 基於HTML5的多圖Ajax上傳的php後台接收並獲取圖片寬高等信息
//但是為什麼我用file_exists()判斷文件是否存在時,得到的結果卻是不存在呢
這句話後面加一句
$file='../uploads/' . $file;
你都把文件存成這個文件了 還用原來的文件名判斷能行嗎
後面的錯誤也是一樣的
也可以直接把後面兩個$file改掉
if(!file_exists('../uploads/' . $file)){
$src_info = @getimagesize('../uploads/' . $file);
⑹ 如何使用HTML5實現利用攝像頭拍照上傳功能
1、 視頻流
HTML5 的 The Media Capture(媒體捕捉) API 提供了對攝像頭的可編程訪問,用戶可以直接用
getUserMedia(請注意目前僅Chrome和Opera支持)獲得攝像頭提供的視頻流。我們需要做的是添加一個HTML5 的 Video
標簽,並將從攝像頭獲得的視頻作為這個標簽的輸入來源。
var video_element=document.getElementById(『video』);
if(navigator.getUserMedia){ // opera應使用opera.getUserMedianow
navigator.getUserMedia(『video』,success,error); //success是回調函數,當然你也可以直接在此寫一個匿名函數
}
function success(stream){
video_element.src=stream;
}
此時,video 標簽內將顯示動態的攝像視頻流。下面需要進行拍照了。
2、 拍照
拍照是採用HTML5的Canvas功能,實時捕獲Video標簽的內容,因為Video元素可以作為Canvas圖像的輸入,所以這一點很好實現。主要代碼如下:
var canvas=document.createElement(『canvas』); //動態創建畫布對象
var ctx=canvas.getContext(』2d』);
var cw=vw,ch=vh;
ctx.fillStyle=」#ffffff」;
ctx.fillRect(0,0,cw,ch);
ctx.drawImage(video_element,0,0,cw,ch,0,0,vw,vh); //將video對象內指定的區域捕捉繪制到畫布上指定的區域,可進行不等大不等位的繪制。
document.body.append(canvas);
3、 圖片獲取
從Canvas獲取圖片數據的核心思路是用canvas的toDataURL將Canvas的數據轉換為base64位編碼的PNG圖像,類似於「data:image/png;base64,xxxxx」的格式。
var imgData=canvas.toDataURL(「image/png」);
這樣,imgData變數就存儲了一長串的字元數據內容,表示的就是一個PNG圖像的base64編碼。因為真正的圖像數據是base64編碼逗號之後的部分,所以要讓實際伺服器收的圖像數據應該是這部分,我們可以用兩種辦法來獲取。
第一種:是在前端截取22位以後的字元串作為圖像數據,例如:
var data=imgData.substr(22);
如果要在上傳前獲取圖片的大小,可以使用:
var length=atob(data).length; //atob 可解碼用base-64解碼的字串
第二種:是在後端獲取傳輸的數據後用後台語言截取22位以後的字元串(也就是在前台略過上面這步直接上傳)。例如PHP里:
$image=base64_decode(str_replace(『data:image/jpeg;base64,』,」,$data);
4、 圖片上傳
在前端可以使用Ajax將上面獲得的圖片數據上傳到後台腳本。例如使用jQuery時可以用:
$.post(『upload.php』,{『data』:data});
在後台我們用PHP腳本接收數據並存儲為圖片。
function convert_data($data){
$image=base64_decode(str_replace(『data:image/jpeg;base64,』,」,$data);
save_to_file($image);
}
function save_to_file($image){
$fp=fopen($filename,』w');
fwrite($fp,$image);
fclose($fp);
}
⑺ Html5移動端上傳圖片並裁剪 - Clipic.js
Clipic.js插件可以為移動端 (僅支持移動端) 提供頭像上傳並裁剪成指定尺寸,用原生js開發的,輕量級,包含html跟css,不到8kb。點此鏈接體驗: https://teojs.github.io/clipic/
https://github.com/teojs/clipic
參數說明
width:Number (默認:500) – 裁剪寬度
height:Number (默認:500) – 裁剪高度
ratio:Number (可選) – 裁剪的比例,當傳入ratio時width/height將無效
src:String (必傳) – 需要裁剪的圖片,可以是圖片鏈接,或者 base64
type:String (默認:jpeg) – 裁剪後圖片的類型,僅支持 jpeg/png 兩種
quality:Number (默認:0.9) – 壓縮質量
buttonText:Array (默認:[『取消』, 『重置』, 『完成』]) – 底部三個按鈕文本
http://bbs.itying.com/topic/5cb17892c6a71b10bcef96b0
⑻ 怎麼用html5或js調用手機的攝像頭拍照上傳以及調用手機相冊選取照片
1、實現頭部的方法代碼。
注意事項:
JavaScript是一種屬於網路的腳本語言,已經被廣泛用於Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。
⑼ 圖片拍照上傳解決方案
微信內置瀏覽器,和一些主流瀏覽器支持調用攝像頭,但也有很多不支持調用攝像頭,僅支持相冊。
如果是WebView中,就需要客戶端支持了,android和ios的許可權也是問題。
formData 簡介
簡單的說就是:通過formData,我們可以用ajax方式來發送表單數據;以前上傳圖片是需要用form表單提交的。
我們知道瀏覽器默認顯示的文件上傳按鈕是很醜的,通常UI都會對上傳按鈕進行設計。有以下幾種方案來寫樣式。
弊端:
坑
通過ref獲取上傳按鈕。
ref方式
event.target方式
坑:
FileReader 簡介
通過 readAsDataURL() ,在讀取操作完成後,result屬性中將包含一個data:URL格式的字元串以表示所讀取文件的內容。
base64字元串
兼容性
我在safari中測試,發現是支持的。
URL.createObjectURL 簡介
通過URL.createObjectURL()創建一個URL對象,這個URL對象表示指定的file對象或Blob對象。
兼容性
張鑫旭的文章: HTML5 file API加canvas實現圖片前端JS壓縮並上傳
張鑫旭的文章: 理解DOMString、Document、FormData、Blob、File、ArrayBuffer數據類型
使用Camera API
張鑫旭
⑽ jquery ajax上傳圖片問題
現在基本上沒有真正的AJAX圖片上傳,你想多了
都是偽AJAX上傳
但是如果是HTML5,倒是有可能,使html5的 canvas,可以把圖片序例化成base64字元串,把這個字元串傳到伺服器,處理一下,再保存就OK了,
我想知道你直接ajax怎麼傳,把你本地路徑傳過去嗎~~~~~
肯定是不行的