Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.05.2015, 16:51
Vlad84 вне форума Посмотреть профиль Отправить личное сообщение для Vlad84 Найти все сообщения от Vlad84
  № 1  
Ответить с цитированием
Vlad84

Регистрация: Jul 2012
Сообщений: 148
По умолчанию Отправляется только заголовок картинки

Странные дела творятся. Не могу отправить ByteArray снятого скриншота.

AS3 отправка:
Код AS3:
var vars:URLVariables = new URLVariables;
vars.id = String(new Date().getTime());
vars.imageFile = by.blooddy.crypto.image.JPEGEncoder.encode(bitmapdata, 10);
 
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
 
var request:URLRequest = new URLRequest(API_URL);
request.requestHeaders = [new URLRequestHeader("Content-type", "multipart/form-data")];
request.data = vars;
request.method = URLRequestMethod.POST;
 
loader.load(request);
POST запроса:
PHP код:
imageFile=%C3%BF%C3%98%C3%BF%C3%A0&id=1431949102369 
От картинки передается только jpg-шный хедер ÿØÿà.

Если байтэррей перекодировать в base64, то тело POSTа выглядит правильно (заполненный base64 стройкой).
Почему байтэррей режется в посте???


Последний раз редактировалось Vlad84; 19.05.2015 в 12:47.
Старый 18.05.2015, 17:03
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 2  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Тело запроса нужно сформировать самостоятельно, в соответствий с протоколом:
https://ru.wikipedia.org/wiki/HTTP

(Так запрос гарантированно выполнится как надо)
Код AS3:
private static const BOUNDARY:String								= "----------Ij5ae0ae0KM7GI3KM7";
private static const HEADER_MULTIPART_BONDARY:URLRequestHeader		= new URLRequestHeader("Content-type", "multipart/form-data; boundary=" + BOUNDARY);
 
const png:ByteArray				= PNGEncoder.encode(_imageSaveCall.image);
const postData:ByteArray		= new ByteArray;
 
postData.writeUTFBytes("--" + BOUNDARY + '\r\nContent-Disposition: form-data; name="file1"; filename="screenshot.png"\r\nContent-Type: image/png\r\n\r\n');
postData.writeBytes(png);
postData.writeUTFBytes("\r\n--" + BOUNDARY + '--\r\n');
А к URLReguest добавить свой заголовок: HEADER_MULTIPART_BONDARY
__________________
Дети не должны знать о своих родителях

Старый 18.05.2015, 17:29
Vlad84 вне форума Посмотреть профиль Отправить личное сообщение для Vlad84 Найти все сообщения от Vlad84
  № 3  
Ответить с цитированием
Vlad84

Регистрация: Jul 2012
Сообщений: 148
Он ровно этот текст и добавляет в запрос.

var_dump():
Код:
string(258) "id=1431952015830&imageFile=%2D%2D%2D%2D%2D%2D%2D%2D%2D%2D%2D%2DIj5ae0ae0KM7GI3KM7%0D%0AContent%2DDisposition%3A%20form%2Ddata%3B%20name%3D%22file1%22%3B%20filename%3D%22screenshot%2Epng%22%0D%0AContent%2DType%3A%20image%2Fpng%0D%0A%0D%0A%C2%89PNG%0D%0A%1A%0A"

Старый 18.05.2015, 17:54
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 4  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 612
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
https://github.com/rzer/simplify/blo...URLUploader.as

Старый 18.05.2015, 18:35
Vlad84 вне форума Посмотреть профиль Отправить личное сообщение для Vlad84 Найти все сообщения от Vlad84
  № 5  
Ответить с цитированием
Vlad84

Регистрация: Jul 2012
Сообщений: 148
Странность номер 2. Значения переменных в post-е нельзя забрать через
Код:
$_POST["var"]
Все данные приходят в виде raw даты, которую надо сначала распарсить(a=b$c=d...), а потом только вынуть. Получается, что нельзя просто запостить байтэррей через api какого-нибудь сервиса?

Добавлено через 4 минуты
Rzer, попробовал, не работает.

Старый 19.05.2015, 00:22
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 6  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 612
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Покажи, как ты отправляешь и получаешь картинку

Старый 19.05.2015, 12:50
Vlad84 вне форума Посмотреть профиль Отправить личное сообщение для Vlad84 Найти все сообщения от Vlad84
  № 7  
Ответить с цитированием
Vlad84

Регистрация: Jul 2012
Сообщений: 148
Отправка:
Код AS3:
var vars:URLVariables = new URLVariables;
vars.id = String(new Date().getTime());
vars.imageFile = by.blooddy.crypto.image.JPEGEncoder.encode(bitmapdata, 10);
 
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
 
var request:URLRequest = new URLRequest(API_URL);
request.requestHeaders = [new URLRequestHeader("Content-type", "multipart/form-data")];
request.data = vars;
request.method = URLRequestMethod.POST;
 
loader.load(request);
Получение:
Код:
<?php

	$rawdata = file_get_contents("php://input");
	var_dump($rawdata);

?>
Результат var_dump:
Код:
string(8) "ÿØÿà"

Такая фигня только с бинарными данными. Если байтэррей сконвертить в base64, то все передается как надо

Старый 19.05.2015, 14:23
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 8  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 612
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Ох, URLVariables не поддерживает картинки - нельзя просто сунуть туда картинку. В request.data нужно передавать ByteArray. А вообще я скинул тебе отличный класс, просто нужно было прочитать комментарий:

Код AS3:
/**
	 * Загрузка файлов на сервер согласно http://ru.wikipedia.org/wiki/Multipart/form-data
	 *
	 * var uploader:URLUploader = new URLUploader();
	 * uploader.addFile(byteArray, "file", "avatar.png");
	 * uploader.addVariable("token", "48dcsa");
	 * uploader.upload("http://server.com/changeAvatar.php");
	 * //затем подписываемся на события как у стандартного URLLoader
	 *
В PHP ловим файл не через file_get_contents("php://input"), а через стандартный $_FILES!! Прочитай пост три раза и пойми, что ты делал не так.

Старый 19.05.2015, 14:52
Vlad84 вне форума Посмотреть профиль Отправить личное сообщение для Vlad84 Найти все сообщения от Vlad84
  № 9  
Ответить с цитированием
Vlad84

Регистрация: Jul 2012
Сообщений: 148
Вот блин! А я все гадал, как флэш провернет байты в строку и отправит их Сразу не дошло, зачем URLUploader упаковывает переменные в байты и сливает все в один массив байтов.

Rzer, а можешь в комментарии к шикарному URLUploader добавить описание передаваемых параметров и как на php эти данные принимать?


Последний раз редактировалось Vlad84; 19.05.2015 в 19:17.
Старый 19.05.2015, 19:15
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 10  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 612
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
https://php.net/manual/ru/features.f...ost-method.php

Соответственно имя поля у тебя imageFile. Название файла $_FILES['imageFile']['name'] = screen.jpg

Забирать переменные нужно из POST.


Последний раз редактировалось Rzer; 19.05.2015 в 19:27.
Создать новую тему Ответ Часовой пояс GMT +4, время: 08:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:27.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.