Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zadanie GET, a base64 (?)
areli
post 11.04.2014, 11:22:57
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.10.2008

Ostrzeżenie: (10%)
X----


Pracuje nad aplikacja hybrydowa (po raz pierwszy) :) i zostosowalem kilka rozwiazan, ktore nie wiem czy sa ogolnie stosowane, ale grunt ze wiekszosc dziala :)

Zalezalo mi, aby aplikacja ladowala content i wysylala zadania do zew. serwera z czym ajax nie chcial sobie poradzic...

zrobilem wiec tak:

  1. function jsonpRequest(url)
  2. {
  3. if (url == 'updateuser')
  4. {
  5. [...]
  6. url = 'http://www.domain.com/updateuser.php?userlogin='+userlogin+'&userid='+userid+'&usertoken='+usertoken+'&user_name='+user_name;
  7. }
  8. var oScript = document.createElement("script");
  9. oScript.setAttribute('src', url);
  10. oScript.setAttribute('type', 'text/javascript');
  11. document.body.appendChild(oScript);
  12. oScript.onload = function()
  13. {
  14. this.parentNode.removeChild();
  15. }
  16. oScript.onreadystatechange = function()
  17. {
  18. if ('loaded' === this.readyState || 'completed' === this.readyState)
  19. {
  20. this.parentNode.removeChild(this);
  21. }
  22. }
  23. }


dzieki temu wszystko dziala tak jak nalezy... to jest oczywiscie wylacznie fragment (przyklad)... problemem jednak bylo uruchomienie kamery i zrobienie zdjecia... poradzilem sobie z tym w ten sposob

  1. <div id="promoNode"></div>
  2. <video id="video" width="210" height="168" autoplay></video>
  3. <button id="snap" class="sexyButton">Snap Photo</button>
  4. <canvas id="canvas" width="210" height="168"></canvas>
  5. <input type="hidden" id="baseimg" value="" />
  6.  
  7. window.addEventListener("DOMContentLoaded", function() {
  8.  
  9. var canvas = document.getElementById("canvas"),
  10. context = canvas.getContext("2d"),
  11. video = document.getElementById("video"),
  12. videoObj = { "video": true },
  13. errBack = function(error) {
  14. console.log("Video capture error: ", error.code);
  15. };
  16.  
  17. if(navigator.getUserMedia) { // Standard
  18. navigator.getUserMedia(videoObj, function(stream) {
  19. video.src = stream;
  20. video.play();
  21. }, errBack);
  22. } else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
  23. navigator.webkitGetUserMedia(videoObj, function(stream){
  24. video.src = window.webkitURL.createObjectURL(stream);
  25. video.play();
  26. }, errBack);
  27. } else if(navigator.mozGetUserMedia) { // WebKit-prefixed
  28. navigator.mozGetUserMedia(videoObj, function(stream){
  29. video.src = window.URL.createObjectURL(stream);
  30. video.play();
  31. }, errBack);
  32. }
  33.  
  34.  
  35. document.getElementById("snap").addEventListener("click", function() {
  36. context.drawImage(video, 0, 0, 210, 168);
  37.  
  38. var dataURL = canvas.toDataURL("image/png");
  39. $('#baseimg').val(dataURL.replace(/^data:image\/(png|jpg);base64,/, ""));
  40. });
  41. }, false);
  42. </script>


dzieki temu wykonuje zdjecie i zapisuje je do canvas, a nastepnie koduje do base64... wszystko git

zewnetrzny skrypt php pieknie mi to zapisuje

  1. $base = $_GET['item_img'];
  2. $binary=base64_decode($base);
  3. header('Content-Type: bitmap; charset=utf-8');
  4. $new_name = rand(0,999).time().'.jpg';
  5. $file = fopen('../items/'.$new_name, 'wb');
  6. fwrite($file, $binary);
  7. fclose($file);


problem jest tylko taki, ze base64 jest za dlugi i nijak nie chce on przejsc przez GET... czy ma ktos pomysl jak to mozna przeslac na zew. serwer?
Go to the top of the page
+Quote Post
sowiq
post 11.04.2014, 14:51:02
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 338
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(areli @ 11.04.2014, 11:22:57 ) *
problem jest tylko taki, ze base64 jest za dlugi i nijak nie chce on przejsc przez GET... czy ma ktos pomysl jak to mozna przeslac na zew. serwer?

Za pomocą POST ->> https://www.google.pl/search?q=js+post+requ...external+domain


--------------------
Go to the top of the page
+Quote Post
areli
post 16.04.2014, 22:43:24
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.10.2008

Ostrzeżenie: (10%)
X----


oczywiscie bralem pod uwage zastosowanie CORS, ale to rozwiazanie nie dziala dla android i ios... chyba, ze cos sie zmienilo :?

---

ma ktos moze jeszcze jakies pomysly jak to zrobic?

jak ogolnie rozwiazuje sie uplodowanie zdjec w hybrid apps?

---

ok zastosowalem CORS i na emulatorze dziala pieknie... zobaczymy tylko czy bedzie dzialac na phonie... smile.gif

dzieki wszystkim

Ten post edytował areli 16.04.2014, 22:43:53
Go to the top of the page
+Quote Post
sowiq
post 16.04.2014, 22:54:09
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 338
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zawsze możesz to rozwiązać tak, jak robiło się za czasów IE łupanego - wysyłać zapytanie POST do ukrytego iframe wink.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.09.2018 - 23:07