Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 尝试将动态绘制的图像从Flex上载到包含多部分表单内容的Rails 3时出错_Apache Flex_Ruby On Rails 3 - Fatal编程技术网

Apache flex 尝试将动态绘制的图像从Flex上载到包含多部分表单内容的Rails 3时出错

Apache flex 尝试将动态绘制的图像从Flex上载到包含多部分表单内容的Rails 3时出错,apache-flex,ruby-on-rails-3,Apache Flex,Ruby On Rails 3,我正在尝试编写一个小flex应用程序,它具有绘画/画布类型的功能来绘制图像,然后我想将其发布到rails服务器端。我正在关注帖子,但由于以下错误,无法达到他所做的程度: NoMethodError(未定义的#的“倒带”方法): 我在谷歌上搜索了一下,发现问题是由于文件名为空,但我想我在示例中看到了这个问题。然而,我改变了示例,通过减少表单参数来简化帖子,但是我可能很容易搞糟一些事情,因为我真的不知道我在用这个多部分表单内容做什么 我希望至少记录请求参数,但不幸的是我不能,因为它在路由之前失败了,

我正在尝试编写一个小flex应用程序,它具有绘画/画布类型的功能来绘制图像,然后我想将其发布到rails服务器端。我正在关注帖子,但由于以下错误,无法达到他所做的程度:

NoMethodError(未定义的#的“倒带”方法):

我在谷歌上搜索了一下,发现问题是由于文件名为空,但我想我在示例中看到了这个问题。然而,我改变了示例,通过减少表单参数来简化帖子,但是我可能很容易搞糟一些事情,因为我真的不知道我在用这个多部分表单内容做什么

我希望至少记录请求参数,但不幸的是我不能,因为它在路由之前失败了,而且我对rails缺乏经验。我会在一个单独的问题中问这个问题,希望能够用request参数编辑这个问题

这是我的密码:

public static function sendPic(simplePaint : SimplePaint) : void {
        var jpgSource:BitmapData = new BitmapData (simplePaint.width, simplePaint.height);
        jpgSource.draw(simplePaint);

        var jpgEncoder:JPEGEncoder = new JPEGEncoder(85);
        var ba:ByteArray = jpgEncoder.encode(jpgSource);

        var request:URLRequest = new URLRequest("../drawings");
        request.method = URLRequestMethod.POST;
        var boundary : String = "----------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7";
        request.contentType = "multipart/form-data; boundary=" + boundary;
        request.data = getMultiPartRequestData(boundary, 'drawing', 'mypic.jpg', ba);


        var urlLoader:URLLoader = new URLLoader();
        urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
        urlLoader.load(request);
    }

    private static function getMultiPartRequestData(boundary:String,
                                             resourceName:String,
                                             filename:String,
                                             bytes:ByteArray):ByteArray {
        //Alert.show("haha");
        var lf:String = "\r\n";

        var part1:String = '--' + boundary + lf + 
            'Content-Disposition: form-data; name="Filename"' + lf + lf +
            '{0}' + lf + 
            '--' + boundary + lf ;
        part1 += 'Content-Disposition: form-data; name="commit"' + lf + lf +  
                 'Create' + lf + 
                 '--' + boundary + lf +                      
                 'Content-Disposition: form-data; name="{1}[pic] ";' +  
                 'filename="{0}"' + lf +                         
                 'Content-Type: application/octet-stream' + lf + lf     

        var part2:String = '--' + boundary + lf + 
                           'Content-Disposition: form-data; name="Upload"' + lf + lf +
                           'Submit Query' + lf +
                           '--' + boundary + '--'

        var result:ByteArray = new ByteArray();
        // Filling in the parameters as per comment above
        result.writeMultiByte(StringUtil.substitute(part1, 
                                                    filename,
                                                    resourceName), "ascii");
        result.writeBytes(bytes,0,bytes.length);
        result.writeMultiByte(part2, "ascii");
        return result;
    }

答案在前面的相关问题的答案中。我刚才在那个答案的复制粘贴编辑中错过了它,或者说是把它解开了

需要更改的代码如下:

'Content-Disposition: form-data; name="{1}[pic] ";' +  
                 'filename="{0}"' + lf +                         
                 'Content-Type: application/octet-stream' + lf + lf 
需要将其更改为:

'Content-Disposition: form-data; name="{1}[pic]"; ' +  // space moved here
                 'filename="{0}"' + lf +                         
                 'Content-Type: application/octet-stream' + lf + lf   
当您将分号后的空格移动到时,它会起作用