Я пытаюсь написать небольшое гибкое приложение с функцией рисования / холста для рисования изображения, которое я затем хочу опубликовать на стороне сервера rails.Я следую за сообщением здесь , но не могу добраться так далеко, как он, из-за следующей ошибки:
NoMethodError (неопределенный метод `rewind 'для #):
Я гуглил это и нашел это , в котором говорится, что проблема связана с пустым именем файла, но я подумал, что у меня это есть из примера.Однако я изменил пример, чтобы упростить публикацию за счет уменьшения параметров формы, но я мог бы легко что-то напутать, поскольку действительно не знаю, что я делаю с этим составным содержимым формы.
Я надеялся, по крайней мере, записать параметры запроса, но, к сожалению, не могу, так как он терпит неудачу перед маршрутизацией и из-за моей неопытности с рельсами.Я спрошу об этом в отдельном вопросе и, надеюсь, смогу редактировать этот вопрос с помощью параметров запроса.
Вот мой код:
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;
}