Titanium: загрузка изображения на сервер - PullRequest
0 голосов
/ 28 февраля 2012

Привет друзья,

Я занимаюсь разработкой приложения на Titanium, а также разрабатываю функциональность для загрузки изображения на сервер методом POST , и я выбираю фотографию из фотогалереи и отправляю на сервер, но мне не удается успешно ответ от сервера, а также я хочу отправить имя изображения в качестве параметра, например 45645.png и параметры мультимедиа и т. д., но Я не могу отправить имя изображения, поэтому, пожалуйста, дайте мне идею, как я могу решить мою проблему .

См. Изображение для загрузки на сервер: http://mobile.tutsplus.com/tutorials/appcelerator/titanium-mobile-build-an-image-uploader/

//photo gallery for  select photo 
function getPhotGallery () 
{
  Titanium.Media.openPhotoGallery({

    success:function(event)
    {
        //var cropRect = event.cropRect;
        var image = event.media;

        // set image view
        Ti.API.debug('Our type was: '+event.mediaType);
        if(event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO)
        {
            uploadPhotoImageView.image = image;

            UploadPhotoToServer(uploadPhotoImageView.image);
        }
        else
        {

        }
        //Titanium.API.info('PHOTO GALLERY SUCCESS cropRect.x ' + cropRect.x + ' cropRect.y ' + cropRect.y  + ' cropRect.height ' + cropRect.height + ' cropRect.width ' + cropRect.width);
    },
    cancel:function()
    {

    },
    error:function(error)
    {
    },
    allowEditing:true,
    //popoverView:popoverView,
    //arrowDirection:arrowDirection,
    mediaTypes:[Ti.Media.MEDIA_TYPE_PHOTO]
    });

}


//upload photo to server uisng POST method
function UploadPhotoToServer(media)
{
        //var filename = mobileNumber.value + '.png';
        var filename = '123456.png';

    if (Titanium.Network.online == true) 
    {  
       var imgUploadLoader = Titanium.Network.createHTTPClient();

            //open the client
          imgUploadLoader.open('POST', 'http://projects.spinxweb.net/ContactsTracking/iphone-file-upload.aspx'); 

         // send the data
         imgUploadLoader.send(
         {
             media: media,
             "name": filename
         });

       imgUploadLoader.onerror = function(e)
       {
            Ti.API.info('IN ERROR ' + e.error);
            alert('Sorry, we could not upload your photo! Please try again.');
       };

       imgUploadLoader.onload = function()
       {
            Ti.API.info('IN ONLOAD ' + this.status + ' readyState ' + this.readyState);
            if(this.responseText != 'false')
            {   
                var url = this.responseText; //set our url variable to the response                 
                Ti.API.log('Upload image url:'+url);    
                //alert('Upload photo successfully');

                //getLoginData();                                       
            }
            else 
            {
                alert('Whoops, something failed in your upload script.');                   
            }           
       };

      imgUploadLoader.onsendstream = function(e)
      {
          Ti.API.info('ONSENDSTREAM - PROGRESS: ' + e.progress);
          if(Ti.Platform.osname == 'android')
          {

          }
          else 
          {

          }
      };


  }     
  else
  {
    alert('You must have a valid Internet connection in order to upload this photo.');
  }
}

1 Ответ

2 голосов
/ 02 марта 2012

Не уверен, что это именно то, что вы ищете, но у меня был успех с этим кодом:

eventSuccess : function ( e )
{
  var xhr = Ti.Network.createHTTPClient ( );
  xhr.open ( "POST", 'yourserver.com/webservice.php' );

  xhr.setTimeout ( 20000 );


  xhr.send ( 
  {         
    "CommandType"    : "image",
    "file"           : e.media,
    "name"           : filename
  });

  xhr.onload = function ( e )
  {
    Ti.API.info ("image sent to server");
  }
}

Это работает, когда событие успеха возвращается с камеры.Затем изображение отправляется на сервер.

Затем вам потребуется что-то на стороне сервера, например:

move_uploaded_file ($_FILES["file"]["tmp_name"], "incoming/images/" . $_FILES["file"]["name"]);
...