Flash Builder将照片上传到服务器

时间:2014-02-09 11:24:27

标签: android flex mobile file-upload flash-builder

我正在开发一个将图像上传到服务器的移动android项目。我是借助服务器上的PHP脚本在Flash Builder中完成的。我的网页由goDaddy托管,我已经完成了上传文件的权限;我可以通过网页上传图片。但是,当我尝试从应用程序发送时,它不会上传。关于这个问题的任何想法?我的代码如下;

Flash Builder:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        title="Photo Upload">

    <fx:Script>
        <![CDATA[
            private var urlRequest:URLRequest = new URLRequest("http://www.mywebsite.com/upload_file.php");
            private var file:File;

            //take a new picture with the camera


            //select a picture from the camera roll (gallery)
            protected function uploadGallery_clickHandler(event:MouseEvent):void
            {
                if (CameraRoll.supportsBrowseForImage) 
                {
                    trace("camera roll is supported");
                    var roll:CameraRoll = new CameraRoll();
                    roll.browseForImage();
                    roll.addEventListener(MediaEvent.SELECT,selectCompleteHandler);
                }
                else
                {
                    trace("camera roll not supported");
                    statusText.text = "Camera roll not supported on this device.";
                }
            }

            //when the selection is complete upload it
            protected function selectCompleteHandler(event:MediaEvent):void
            {
                trace("event.data.file.url; = "+event.data.file.url);

                file = event.data.file;
                file.addEventListener(Event.COMPLETE,uploadCompleteHandler);
                file.addEventListener(Event.OPEN,openUploadHandler);
                file.upload(urlRequest);

            }

            protected function uploadCompleteHandler(event:Event):void
            {
                trace("upload complete");
                statusText.text = "Photo Uploaded";
            }

            protected function openUploadHandler(event:Event):void
            {
                trace("uploading");
                statusText.text = "Uploading...";
            }
        ]]>
    </fx:Script>

    <s:VGroup x="21" y="23" width="200" height="200">
        <s:Label id="statusText" fontSize="24" text="Choose a Photo..."/>
        <s:Button id="galleryPhotoButton" label="Upload from Gallery"
                  click="uploadGallery_clickHandler(event)"/>
    </s:VGroup>
</s:View>

服务器上的PHP脚本:

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

1 个答案:

答案 0 :(得分:0)

您是否在执行上述代码时遇到任何错误或任何异常? 您也可以尝试添加urlRequest方法,如下所示:

urlRequest.method = URLRequestMethod.POST;