當前位置:首頁 » 文件傳輸 » js拍照上傳
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

js拍照上傳

發布時間: 2022-04-12 18:01:42

『壹』 input flie 拍照不能上傳

<template>
<h5 class="content-header">圖片列表</h5>
<div class="image-list">
<div class="list-default-img" v-show="isPhoto" @click.stop="addPic">
<img src="./images/icon_photo.png" />
<span>請選擇或者拍照上傳照片</span>
<input type="file" accept="image/jpeg,image/jpg,image/png" capture="camera" @change="onFileChange" style="display: none;">
</div>
<ul class="list-ul" v-show="!isPhoto">
<li class="list-li" v-for="(iu, index) in imgUrls">
<a class="list-link" @click='previewImage(iu)'>
<img :src="iu">
</a>
<span class="list-img-close" @click='delImage(index)'></span>
</li>
<li class="list-li-add">
<span class="add-img" @click.stop="addPic"></span>
</li>
</ul>
</div>
<div class="add-preview" v-show="isPreview" @click="closePreview">
<img :src="previewImg">
</div>

</template>

<script>

export default {
data: function () {
return {
imgUrls: [],
urlArr: [],
isPhoto: true,
btnTitle: '',
isModify: false,
previewImg:'',
isPreview: false
}
},
watch: {
imgUrls: 'toggleAddPic'
},
methods: {
toggleAddPic: function() {
let vm = this;
if(vm.imgUrls.length >= 1) {
vm.isPhoto = false;
} else {
vm.isPhoto = true;
}
},
addPic: function(e) {
let vm = this;
$('input[type=file]').trigger('click');
return false;
},
onFileChange: function(e) {
var files = e.target.files || e.dataTransfer.files;
if(!files.length) return;
this.createImage(files, e);
},
createImage: function(file, e) {
let vm = this;
lrz(file[0], { width: 480 }).then(function(rst) {
vm.imgUrls.push(rst.base64);
return rst;
}).always(function() {
// 清空文件上傳控制項的值
e.target.value = null;
});
},
delImage: function(index) {
let vm = this;
let btnArray = ['取消', '確定'];
mui.confirm('確定刪除該圖片?','提示', btnArray, function(e) {
if (e.index == 1) {
vm.imgUrls.splice(index, 1);
}
})

},
previewImage: function(url){
let vm = this;
vm.isPreview = true;
vm.previewImg = url;
},
closePreview: function(){
let vm = this;
vm.isPreview = false;
vm.previewImg = "";
},
saveImage: function(){
let vm = this;
let urlArr = [],
imgUrls = this.imgUrls;

for(let i = 0; i < imgUrls.length; i++) {
if(imgUrls[i].indexOf('file') == -1) {
urlArr.push(imgUrls[i].split(',')[1]);
} else {
urlArr.push(imgUrls[i]);
}
}

//數據傳輸操作
}
}
}

</script>

1.點擊拍照或選擇圖片addPic

在vue.js中出發拍照和選擇圖片是頻繁操作行為,每次只能拍照或選擇一張圖片,可以拍多張上傳,使用給click事件加上.stop的修飾符,.stop- 調用event.stopPropagation(),是為了停止冒泡。accept是為了規定通過文件上傳來提交的文件的類型,capture是webApp中捕獲到系統默認的設備,camera--照相機;camcorder--攝像機;microphone--錄音。

4. 大圖預覽已經被壓縮的圖片及關閉大圖預覽 isPreview previewImageclosePreview

在這里大圖預覽就是將base64格式的圖片直接放進預覽DOM的img src中放大展示,點擊圖片自身關閉預覽,清空img src資源。

5. 對base64圖片傳輸前的處理 saveImage

saveImage: function(){
let vm = this;
let urlArr = [],
imgUrls = this.imgUrls;

for(let i = 0; i < imgUrls.length; i++) {
if(imgUrls[i].indexOf('file') == -1) {
urlArr.push(imgUrls[i].split(',')[1]);
} else {
urlArr.push(imgUrls[i]);
}
}

//數據傳輸操作
}

我壓縮成base64字元串是「data:image/jpeg;base64,~~」的字元串,為了後端好處理,我這里為了將編輯時候後台返回的圖片url區別開來,將「data:image/jpeg;base64,"截取掉,只傳遞給後端逗號後面的base64字元串。

注意:後端接收到我傳遞的base64字元串數組的時候,發現字元經如果被urlencode後標準的base64中的/、 +會被轉成%xx,後端在將base64字元串處理成圖片時,需要將特殊字元過濾掉。

[HttpPost]
public ActionResult MUploadImgBase64Str(string base64str)
{
try
{
var imgData = base64str;
//過濾特殊字元即可
string mmyData = imgData.Trim().Replace("%", "").Replace(",", "").Replace(" ", "+");
if (mmyData.Length % 4 > 0)
{
mmyData = mmyData.PadRight(mmyData.Length + 4 - mmyData.Length % 4, '=');
}
byte[] byteArray = Convert.FromBase64String(mmyData);
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray))
{
var img = System.Drawing.Image.FromStream(ms);

var path = "~/Content/UploadFiles/mobile/";
var uploadpath = Server.MapPath(path);
if (!Directory.Exists(uploadpath))
{
Directory.CreateDirectory(uploadpath);
}
var saveName = uploadpath + 「stoneniqiu」 + ".jpg";
img.Save(saveName);
return Json(saveName);
}
}
catch (Exception e)
{
return Json(e.Message);

}
}

『貳』 使用js向伺服器上傳文件

(1)js無法向網站伺服器傳送文件只能用FTP傳送文件,(2)是動態網站要用js代碼函數與伺服器資料庫代碼建立連接函數。對應資料庫,數據,相應單位,通過指定路徑傳輸倒是制定數據單位。例如照片imag數據單位格式標注照片。通過編輯代碼任意網路客戶端都可上傳到資料庫imag格式單位標注中.相片.

『叄』 html5如何調用手機攝像頭,實現拍照,拍視頻實現上傳功能

html5提供了 navigator.getUserMedia介面使用設備攝像頭,chrome28上測試已經可用,手機端瀏覽器測試發現只有opera瀏覽器可用。
瀏覽器未完善之前可以使用PhoneGap完成,它提供了 navigator.camera.getPicture介面,使用js可以方便調用設備攝像頭。

『肆』 html5調用手機攝像頭,實現拍照上傳功能

html5提供了
navigator.getusermedia介面使用設備攝像頭,chrome28上測試已經可用,手機端瀏覽器測試發現只有opera瀏覽器可用。
瀏覽器未完善之前可以使用phonegap完成,它提供了
navigator.camera.getpicture介面,使用js可以方便調用設備攝像頭。

『伍』 網頁調用攝像頭拍照改成上傳本地圖片

網頁調用攝像頭,很多瀏覽器不支持的。思路是:調用攝像頭拍照後,獲取到圖片的地址,或者文件二進制內容,非同步傳輸到伺服器。上傳也有兩種方法吧,一種是用H5的file類型input標簽,通過表單傳的。一種是通過js把文件轉成base64編碼格式傳輸的。

『陸』 如何使用HTML5實現拍照上傳應用 · Web前端

這是例子,拿走

<!DOCTYPEHTML>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>camera</title>
<scriptlanguage="javascript"src="jquery.js"></script>
</head>

<body>
<divid="contentHolder">
<videoid="video"width="320"height="320"autoplay></video>
<buttonid="snap"style="display:block"onClick="getcamera()">拍照</button>
<canvasstyle="display:block"id="canvas"width="320"height="320"></canvas>
</div>

<divid="support"></div>
<divid="mydatetime"></div>
<scriptlanguage="javascript">
//判斷瀏覽器是否支持HTML5Canvas
$(document).ready(function(){
try{
//動態創建一個canvas元,並獲取他2Dcontext。如果出現異常則表示不支持document.createElement("canvas").getContext("2d");
document.getElementById("support").innerHTML="瀏覽器支持HTML5CANVAS";
}
catch(e){
document.getElementById("support").innerHTML="瀏覽器不支持HTML5CANVAS";
}
document.getElementById("mydatetime").innerHTML=getNowFormatDate();
});
functiongetcamera(){
//這段代主要是獲取攝像頭的視頻流並顯示在Video簽中
window.addEventListener("DOMContentLoaded",function(){
varcanvas=document.getElementById("canvas"),
context=canvas.getContext("2d"),
video=document.getElementById("video"),
videoObj={"video":true},
errBack=function(error){
console.log("Videocaptureerror:",error.code);
};
//navigator.getUserMedia這個寫法在Opera中好像是navigator.getUserMedianow
if(navigator.getUserMedia){
navigator.getUserMedia(videoObj,function(stream){
video.src=stream;
video.play();
},errBack);
}
elseif(navigator.webkitGetUserMedia){
navigator.webkitGetUserMedia(videoObj,function(stream){
video.src=window.webkitURL.createObjectURL(stream);
video.play();
},errBack);
}
//這個是拍照按鈕的事件
$("#snap").click(function(){
context.drawImage(video,0,0,320,320);
});
},false);
}
//定時器
//varinterval=setInterval(CatchCode,"300");//這個是刷新上圖像的
functionCatchCode(){
$("#snap").click();
//實際運用可不寫,測試代,為單擊拍照按鈕就獲取了當前圖像,有其他用途
varcanvans=document.getElementById("canvas");
//獲取瀏覽器頁面的畫布對象
}

/*
//以下開始編數據
varimgData=canvans.toDataURL();
//將圖像轉換為base64數據
varbase64Data=imgData.substr(22);
//在前端截取22位之後的字元串作為圖像數據
//開始非同步上
$.post("uploadImgCode.ashx",{"img":base64Data},function(data,status){
if(status=="success"){
if(data=="OK"){
alert("二維已經解析");
}
else{
//alert(data);
}
}
else{
alert("數據上失敗");
}
},"text");
*/

functiongetNowFormatDate(){
vardate=newDate();
varseperator1="-";
varseperator2=":";
varmonth=date.getMonth()+1;
varstrDate=date.getDate();
if(month>=1&&month<=9){
month="0"+month;
}
if(strDate>=0&&strDate<=9){
strDate="0"+strDate;
}
varcurrentdate=date.getFullYear()+seperator1+month+seperator1+strDate
+""+date.getHours()+seperator2+date.getMinutes()
+seperator2+date.getSeconds();
returncurrentdate;
}
</script>
</body>
</html>

『柒』 怎麼用html5或js調用手機的攝像頭拍照上傳以及調用手機相冊選取照片

1、實現頭的方法代碼。

注意事項:

JavaScript是一種網路腳本語言,在web應用開發中得到了廣泛的應用,它經常被用來為網頁添加各種動態功能,為用戶提供更加流暢美觀的瀏覽效果,通常JavaScript腳本被嵌入到HTML中來實現自己的功能。

『捌』 怎麼用html5或js調用手機的攝像頭拍照上傳以及調用

h5不能直接調用攝像頭,只能用<input type="file" />上傳圖片來間接調用攝像頭

『玖』 html5或者JS怎樣調用手機攝像頭或者相冊

你給的網頁用的是 <input accept="image/*" type="file">,在IOS端點擊時會提示選擇圖片或相機,安卓端要看瀏覽器對這兩個屬性的優化,部分瀏覽器會直接跳轉到資源管理器,優化做得好的可以直接提示選擇相冊或相機。