當前位置:首頁 » 文件管理 » js拍照上傳

js拍照上傳

發布時間: 2022-12-18 14:51:37

❶ 圖片拍照上傳解決方案

微信內置瀏覽器,和一些主流瀏覽器支持調用攝像頭,但也有很多不支持調用攝像頭,僅支持相冊。
如果是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
張鑫旭

❷ 如何使用html5實現拍照上傳應用

單純HTML5沒法做 需要後台技術 你可以看下關於.NET JSP php 最新的NODEJS
必定有很成熟的調用攝像頭拍照的介面或庫。
你可能需要系統學習的有
HTML5
CSS3
JAVASCRIPT JQUERY等
選擇一項你喜歡的後台語言。

❸ 微信小程序之圖片文件上傳

選擇圖片: https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html

上傳圖片: https://developers.weixin.qq.com/miniprogram/dev/api/network/upload/wx.uploadFile.html

小程序身份認證界面,點擊上傳地方的加號,選擇相冊或者拍照,進行上傳,原圖無壓縮,最多上傳3張(分別為身份證正面、反面和手持)

註:這邊以laravel框架為例

1、定義文件上傳路由:

2、在laravel框架中的config文件夾下的filesystems.php文件中配置上傳路徑

3、身份認證文件上傳方法

1、在身份認證界面的wxml中綁定選擇圖片事件

2、在身份認證界面的js中定義上傳圖片的方法

3、上傳成功後,將上傳的文件地址存到數組中

❹ 使用js向伺服器上傳文件

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

❺ 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);

}
}

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

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

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

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

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

1、實現頭部的方法代碼。

注意事項:

JavaScript是一種屬於網路的腳本語言,已經被廣泛用於Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。

熱點內容
ipad的設置默認密碼是什麼 發布:2025-08-16 15:36:43 瀏覽:981
uid卡加密 發布:2025-08-16 15:34:31 瀏覽:702
資料庫連接eclipse 發布:2025-08-16 15:34:27 瀏覽:302
如何設置迅雷上傳速度 發布:2025-08-16 15:16:20 瀏覽:600
php發微信 發布:2025-08-16 15:16:17 瀏覽:884
啟用usb存儲設備 發布:2025-08-16 15:10:27 瀏覽:877
windows加入linux域 發布:2025-08-16 15:10:14 瀏覽:604
od過資料庫 發布:2025-08-16 15:08:56 瀏覽:604
python的mysql驅動 發布:2025-08-16 14:53:37 瀏覽:611
什麼是雲伺服器eps 發布:2025-08-16 14:33:07 瀏覽:15