A. uniapp框架下H5上傳文件
背景:
在 uniapp 開發中, uni.chooseImage 選擇文件進行上傳到伺服器。在 app plus 的情況加可以使用 uni.uploadFile 。但是在 H5 的條件下選擇文件的格式為 blob:file:///1234567777 ,沒有辦法使用 uni.uploadFile 。目前可以使用 XMLHttpRequest 上傳。
B. 怎麼在uniapp、index.vue中導入圖片
在uniapp、index.vue中導入圖片的方法分別如下:
1、在uniapp導入圖片的方法是在js中通過require() 引入圖片(圖片大小不能超過3kb)或在html中通過相對路徑引入(絕對路徑打包後圖片不顯示)。
2、在index.vue中導入圖片的方法是先給圖片地址綁定變數,在script中設置變數。直接將圖片引入為模塊,require imgUrl from "../assets/test.png"。即可完成圖片的導入。
C. uniapp中使用插件進行上傳附件(word,表格,圖片等)
上傳文章封面我是使用uniapp自帶的api(uni.chooseImage)count 數量根據自己的需求來
上傳文章封面js
上傳附件的話官網沒有自帶的api,那麼就需要使用插件:(插件鏈接: https://ext.dcloud.net.cn/plugin?id=4109 )
D. uniapp上傳圖片至伺服器,獲得在線圖片鏈接預覽(實戰)
功能需求:
前端選擇本地文件,將選擇好的文件顯示在界面上進行預覽,可同時選擇四張進行預覽。
思路如下:
前端選擇本地的png、jpg、等格式的圖片,將圖片以二進制的形式傳到後端伺服器,後端對二進制圖片進行處理,返回給前端一個伺服器鏈接在線圖片,在瀏覽器就可以打開鏈接訪問的那種。然後前端將這個圖片鏈接渲染在頁面進行預覽。
首先
我們看一下uniapp的官方文檔:
https://uniapp.dcloud.io/api/media/image?id=chooseimage
大概是這樣的
先寫一個模擬的demo
1:首先我是是用了colorUI的框架,在項目裡面引入
在page底下的vue文件引入
這樣一來,就不需要寫什麼樣式了,直接使用寫好的就行了。
效果是這樣的
每次選完圖片之後顯示在頁面上,我這里設置了最多可以選擇四張,圖片鏈接使用了臨時的blob,接下來就要使用後端小夥伴給的介面,將自己本地的二進制文件傳給他了。
在 chooseImage 選擇好圖片之後,寫一個成功的回調函數,在回到函數裡面添加一個圖片上傳的方法uploadFile,在方法裡面添加url,等參數。
若是請求成功
則返回一個圖片鏈接
添加介面之後 的,demo如下:
E. uniapp調用手機相冊保存流到後台服務
沒有獲取相冊許可權。uniapp由於沒有獲取相冊許可權,就會出現調用手機相冊保存流到後台服務的情況。解決方法如下:
1、首先重新啟動手機,點擊進入設置。
2、其次點擊許可權設置。
3、最後打開該程序的相冊許可權即可。
F. uni-app 入門到精通 (二)
18 年時候有幸接觸到 uniapp , 寫了一篇 《uni-app 入門到精通》 ,由於一些原因,該方案並沒有執行,該項目一系列文章也就沒有再寫下去,所以遭受到了許多人評論的吐槽,到如今公司項目的需求又要根據 uniapp 寫 H5 嵌入到 app 中,所以想根據項目實際開發分享一下,有興趣的夥伴可以參考和吐槽。
這一篇文章主要分享一下內容
uniapp 模板項目有兩種初始化方式
由於無法舍棄 VSCode ,我們採用 vue-cli 來初始化項目, HBuilderX 大家可以參照官方文檔
這種方式是可以通過 vue 腳手架命令指定模板,這個是 dcloudio 的官方提供模板
我們選擇默認模板即可,
成功後我們執行
打開瀏覽器地址,直接運行即可。
一般剛接觸前端的小夥伴可能會對 postcss 不太了解,這里簡單介紹一下,
當然 PostCSS 具體使用是需要引入一些插件的,例如常用的是 autoprefixer postcss-preset-env 等, 具體如何使用大家可以自行參考資料,畢竟這塊知識還是挺多的就不具體展開解釋了。
通常我們在寫移動端時候需要做的是頁面適配方案的確定, uni-app 支持的通用 css 單位包括 px、rpx , 之前的 upx 方案已經被廢棄掉,官方解釋是目前市面上已經基本上支持了微信的 rpx 方案,所以 upx 中轉方案已經意義不大了,不過還可以繼續使用,不過已經不再推薦。
rpx 之初是由微信小程序提出一種方案,即根據寬度來進行適配以 750 寬屏幕為基準, 750rpx 恰好為屏幕寬度, uni-app 規定屏幕基準寬度 750rpx 。所以說如果你們的UI 設計以 750*1334 iphone 6/6s 為基準設計的話,你只需要將屏幕上 px 寫為 rpx 即可,不用做任何換算,如果不是的話,你就需要做如下換算:
uniapp 有自己一套路由管理機制,而未採用 vue-route 方案,個人認為這套方案還是比較成熟和好用的,以及可以滿足我們日常的需求:
保留當前頁面,跳轉到應用內的某個頁面,使用uni.navigateBack可以返回到原頁面。
2.uni.redirectTo(OBJECT)
關閉當前頁面,跳轉到應用內的某個頁面。
3.uni.reLaunch(OBJECT)
關閉所有頁面,打開到應用內的某個頁面。
注意: 如果調用了 uni.preloadPage(OBJECT)) 不會關閉,僅觸發生命周期 onHide
4.uni.switchTab(OBJECT)
跳轉到 tabBar 頁面,並關閉其他所有非 tabBar 頁面。
注意: 如果調用了 uni.preloadPage(OBJECT)不會關閉,僅觸發生命周期 onHide
5.uni.navigateBack(OBJECT)
關閉當前頁面,返回上一頁面或多級頁面。可通過 getCurrentPages() 獲取當前的頁面棧,決定需要返回幾層。
5.uni.preloadPage(OBJECT)
預載入頁面,是一種性能優化技術。被預載的頁面,在打開時速度更快。
以上路由API 已經滿足我們的需求,當然進行路由跳轉的前提是我們需要在 pages.json 進行路由配置, 包括路由和具體的樣式配置
而進行具體路由跳轉我們需要如下,需要多加一個 /
需要特別注意的一點是, 利用瀏覽器 在 進行 移動H5頁面調試時候,會出現頁面刷新之後頁面棧會消失,此時navigateBack不能返回,如果一定要返回可以使用history.back()導航到瀏覽器的其他歷史記錄。
uniapp 提供網路請求的 api 是 uni.request ,具體支持的請求方法可以參考官網 method 有效值
不過我們通常不會直接使用,而是進過一系列的封裝以方便我們的使用,具體封裝介面使用會在隨根據頁面數據請求一並展示。
G. uni-app數據緩存
首先uni-app提供的數據緩存Storage分四種模式:
一種是set(用於存儲數據)、一種是get(用於獲取數據)、一種是remove
(用於移除指定數據)、最後一種是clear(清除緩存數據)
然後區分:帶Sync欄位是同步的,沒有帶的是非同步。
查看緩存數據的界面面板:
谷歌瀏覽器--開發者工具--Application--Storage--Local Storage
上面這個面板就是進行查看數據緩存相關信息的。
下面進行非同步數據緩存展示,就是沒帶Sync欄位的,順序:先有set模式-->get模式-->remove模式-->clear模式(一般很少用)
首先准備三個按鈕,分別對應上面的三個功能: 存儲數據、獲取數據、移除數據
方法定義:
功能實現:
(1)存儲數據
uni.setStorage(OBJECT)
這個對象裡面傳入一個key和一個data,你可以理解為鍵值對的形式,然後一個回調函數success
當我們點擊「存儲數據」的這個按鈕時,我們來到面板就會看到數據已經緩存成功呈現在面板上。而key為鍵,data為值。
(2)獲取數據
uni.getStorage() 用於獲取緩存的數據
這里的key對應setStorage的key,然後再success回調函數裡面接受res返回數據的結果,控制台輸出。
(3)移除數據
一般用於移除整個數據。
回到數據緩存的面板查看,發現key為"student"的欄位已經完整移除。
帶Sync的,不需要指定特定的鍵(key)和值(data)。
以setStorageSync(key,value)為例子,同步可以直接接受參數,第一個參時就是key鍵,第二個參數為value值。
將上面的例子改成同步,效果是一樣的。
數據緩存:
獲取數據:
H. uniapptext能不能放圖片
uniapptext不能放圖片。你的好友給你發送一些好看的風景照時,想要保存,那麼在snapchat圖片怎樣添加到手機相冊呢?接下來小編為大夥講述snapchat圖片添加到手機相冊教程,希望可以幫助到有需要的朋友。
I. uni-app項目怎麼導出一個包內嵌到別的app項目或小程序中
思路應該有問題,沒法直接內嵌,你需要首先分析其他的app的結構,或者小程序結構
在業務層次講進行打通。
還有一個方案,別的 app或者小程序反編譯為uniapp識別的代碼,將你的糅合進去
J. uniapp 上傳圖片遇到的問題
昨天在測試上傳圖片的時候,突然發現一個很狗血的問題,就是ios選取手機里保存的圖片都可以的,但是使用拍照的圖片就是上傳不了,一點擊選取都立馬彈出報錯信息,我當時並不覺得是圖片大小的問題,因為在安卓機上測試的時候,拍照圖片也都是可以上傳的,後面對圖片的大小限制最多也是有10M的,最後才發現是nginx上面默認有傳輸大小的限制【哭笑】,最後前端上傳圖片之前做了壓縮處理,nginx也把限制放寬,最後終於可以上傳所有圖片了【豎起大拇指】