【问题标题】:Uploading image to server using byte array to php upload in flex 4.5 air使用字节数组将图像上传到服务器到 flex 4.5 air 中的 php 上传
【发布时间】:2023-03-25 02:53:01
【问题描述】:

我在 Mobile air for android 应用程序中使用 Flex 4.5。

所以,使用相机/相机胶卷 (http://www.unitedmindset.com/jonbcampos/2010/09/29/air-for-android-camera-and-camera-roll/) 我想使用 amfphp 做一个简单的上传

注意:由于这是您在设备上获取图片的方式,因此我无法使用文件引用,因为它希望您使用无法在 android 或 ios 上完成的“浏览”来获取图片

我的计划是,在我选择一张照片或用相机拍摄一张照片后,如果我可以像这样获得所拍照片的本地网址:

file:///mnt/sdcard/DCIM/Camera/IMG_20110531_205113.jpg

我将其放入 imageURL var

(我假设我应该把它变成一个字节数组来传输它,我不确定这是我第一次做这样的事情)

以下是我如何获取该图像,将其制成字节数组,然后使用 amfphp 将上传内容发送到服务器:

protected function upload_btn_clickHandler(event:MouseEvent):void
            {
                var request:URLRequest = new URLRequest(imageURL);
                var urlLoader:URLLoader = new URLLoader(request);

                urlLoader.addEventListener(Event.COMPLETE, onURLLoaderComplete);
                urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
                urlLoader.load(request);

            }

            private function onURLLoaderComplete(event:Event):void
            {
                var byteArray:ByteArray;
                byteArray = event.target.data;

                //send upload using amfphp!
                gw.call("MyClass.uploadFile", uploadImageRes, byteArray);
            }

这是我的 php 代码:

function uploadFile($fileData) {
        $myFilePath = '../../../assets/userphotos/imageone';
        preg_replace("/[^0-9]+/","_",microtime()).'_'.$fileData["filename"];
        file_put_contents($myFilePath, $fileData["filedata"]);

        //eventually add the mysql query to add the image path to mysql server

        return true;
       }

但我收到 NetConnection.Call.BadVersion 错误。

这是我第一次尝试这样的事情,所以我什至不确定我是否做对了。我在网上找到的所有示例都使用 fileReference 类,但这似乎需要我使用“浏览”方法,并且我在使用相机和相机胶卷从设备上抓取图片的移动应用程序上,而我没有确定如何将其合并到 fileref 类中。我想我可以自己获取字节数组并将其发送到 php,它应该没问题。

我的最终目标是能够将图像上传到服务器上的文件夹,并且我将进行 mysql 更新以放置文件的位置,我还不太担心 mysql 部分,我确定那部分会很容易,我可以弄清楚。我只是想在实际将图像上传到目录时获得一些帮助。谢谢!

【问题讨论】:

    标签: php apache-flex actionscript-3 file-upload bytearray


    【解决方案1】:

    我至少可以帮你调试一下。

    NetConnection.Call.BadVersion 通常在 php 脚本中抛出错误时在客户端中抛出。这使得 php 输出错误,进而使响应的 amf 结构无效,使 flash 无法识别 amf 格式并抛出“Bad version”错误。

    我建议您获取一个数据包捕获程序(如wireshark)并查看服务器输出的内容,或者如果您只是在移动设备上遇到此错误,请使用error_get_last()检查php脚本的底部并将其保存在您可以查看的文本文件中。

    当你看到 php 抛出了哪个错误时,也许你可以更进一步。

    【讨论】:

      猜你喜欢
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      相关资源
      最近更新 更多