2013年5月3日 星期五

PhoneGap 拍照和上傳 (GetPicture & Upload)

最近...突然被主管叫去交付了一個任務

原本只是說拉介面(OS: 還好...),沒想到需求越來越大,

結果最後整個專案都變成我在座了嘛!(怒摔桌)

咳...重點不是宣洩怒氣,所以先忍耐吧~_~

http://blog.csdn.net/xiaoguang44/article/details/8073915

首先拍照的部分,我是參考上面這篇,

基本上都已經說得很詳細了,要注意的就是,

FILE_URI 可以改成 DATA_URL (不是很重要)

還有就是 destinationType: navigator.camera.DestinationType.FILE_URI

這最後面可以變成 FIEL_URL, saveToPhotoAlbum: true 啊啊!!

這超級重要的,只要加上這行就可以把照片直接存進相簿,

不然要找暫存資料夾,加上每台手機路徑都不同,

不知道還真的是會把自己累死!

 另外像是 sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY

可以把 PHOTOLIBRARY 換成 CAMERA 就會變成拍照,這些上網查查就知道,

在這邊會遇到一個問題...就是直接抓手機內存的圖片很容易當機,

恩...這幾天我去問了朋友跟Google的結果...似乎是無解,

雖然我主管說是摳都法版本的問題(原本是2.5.0),

不過換到 2.7.0 之後裡面一些功能都壞掉了嘛~連用都不能用...(還是無解)

所以請乖乖的拍照...

上傳的部分,我是使用 web service (.asmx) 接收 POST 的資料,

至於程式碼...請參照以下網址

https://groups.google.com/forum/?fromgroups=#!topic/phonegap/3XhwEyPnw6I

比較需要注意的是 options.fileKey="recFile" 的名稱必須和接收端的

HttpPostedFile file = HttpContext.Current.Request.Files["recFile"];相同,才有資料。

至於 ServerURI...請自己先發行好服務,然後引用看看,直接引用會有失敗訊息 ,

因為你只是引用...也沒給他File資料...當然抓不到,但就代表可以接了!

再來就是上傳成功和失敗的 function 部分,會看到大部分例子都是alert();

但其實可以寫其他 function 並傳入你想丟進去的變數,而不是只有例子中的那些。

如:

function win() { document.getElementById('Label1' + i).innerText = "上傳成功"; }

這樣就可以在畫面上直接顯示上傳成功,而不是alert()點下去就忘記上傳結果了!

剩下可能還很多...短短幾天搞出來的,

不過2.7.0的資料來源太少...都是英文,過幾天再看看吧...=..=

3 則留言:

  1. 您好
    我有個問題也PO在這
    http://www.e-happy.com.tw/indexforum.asp?bid=11850
    也是從2.5換到2.7之後,幾乎所有東西都壞掉了
    不知道新版本的phonegap是不是不能夠在這樣操做了呢

    回覆刪除
  2. TO 小包

    phonegap最近有推出2.8的版本,它號稱修復了非常多的bug
    (雖然我不知道是有多少...還有會不會引入新的bug~?)

    至於2.5升級至2.6或2.7所產生無法拍照的問題,基本上是無解
    在和主管討論之後,也因為這東西實在太多異象(而且還無法掌控)
    所以最後就交由外包廠商負責...

    我想如果可以的話升級到2.8試試看,可以就皆大歡喜。
    但沒辦法的話也只能退回2.5,但依照他使用上的不少問題看來,
    可能還要經歷過好幾次改版才能在手機上平穩的使用拍照功能:)

    回覆刪除
    回覆
    1. 感謝您的說明
      那我還是先繼續先沿用2.5好了(剛剛早上試過一次),目前build.phonegap.com只支援到2.7.0,
      2.6.0跟2.8.0還沒有,系統會說它不認得....ㄚ_ㄚ
      我回家後試試看手動下載2.8,然後把phonegap.js 2.8的版本打包到我的apk,然後,再試試看好了@@

      刪除