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的資料來源太少...都是英文,過幾天再看看吧...=..=