Загрузка/выгрузка фото из БД

Программирование на Юнити.

Загрузка/выгрузка фото из БД

Сообщение Hash 26 мар 2012, 12:11

Добрый день, сложилась такая ситуация нужно хранить изображение и БД. Не путь к файлу, а именно изображение.
Собственно передавать бинарные данные не получилось. Поэтому конвертировал в строку и пересылал в БД. Теперь не могу выгрузить обратно. Привожу листинг:
Синтаксис:
Используется csharp
var url = "file://1.jpg";
        var f = new WWW(url);

        var Photo_bytes = f.bytes;

        var form = new WWWForm();

        form.AddField("RName", RName.ToString());
        form.AddField("RThirdName", RThirdName.ToString());
        form.AddField("RCity", RCity.ToString());

        string Photo = System.Convert.ToBase64String(Photo_bytes);
        form.AddField("Photo", Photo.ToString());

        var download = new WWW(AddUser_Url, form);
        yield return download;
 



Синтаксис:
Используется javascript
$Photo = mysql_real_escape_string($_POST['Photo'], $db);
$IRC='';

 $query = "INSERT INTO Table001 VALUES('$Name','$ThirdName','$City','$Mail','$Year','$Pass','$Sex','$Online','$Pol','$Photo','$IRC');";      
 $result = mysql_query($query) or die('Query failed: ' . mysql_error());
Hash
UNIт
 
Сообщения: 61
Зарегистрирован: 06 апр 2011, 09:24

Re: Загрузка/выгрузка фото из БД

Сообщение Hash 26 мар 2012, 12:15

Сократил некоторые поля для читабельности.
И непосредственно как я пытаюсь выгрузить из БД. В php просто передаю строку типа string в Unity.

Синтаксис:
Используется csharp
var form = new WWWForm();
for (int i = 0; i < 15; i++)
{
form.AddField("Mail", StripMail_Mas[i].ToString());
var download = new WWW(StripPhoto_Url, form);
yield return download;

byte[] aa = System.Convert.FromBase64String(download.text);
 if (aa != null)
 tex.LoadImage(aa);
 


Ничего не получается и когда создаю кнопку пишет, что NULL. Возможно он конвертировать не может обратно в картинку.
Спасибо за помощь
Hash
UNIт
 
Сообщения: 61
Зарегистрирован: 06 апр 2011, 09:24

Re: Загрузка/выгрузка фото из БД

Сообщение gnoblin 26 мар 2012, 14:51

а что не получилось с бинарными данными?

выведи что отвечает сервер на запрос скачать фотку в консоль
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Загрузка/выгрузка фото из БД

Сообщение Woolf 26 мар 2012, 15:43

Собственно передавать бинарные данные не получилось. Поэтому конвертировал в строку и пересылал в БД.


Почему не получилось? Зачем эти танцы с бубном?

В таблице заводите поле blob

Синтаксис:
Используется csharp
byte[] photo=getPhotoAsBytes();
string qry="insert into tablename (photo) values (@photo)"
MySqlCommand cmd = new MySqlCommand(qry, DBConnection);
cmd.Parameters.AddWithValue("@photo", photo);
cmd.Prepare();
cmd.ExecuteNonQuery();
 


это запись, ну и читать, так:

Синтаксис:
Используется csharp
    public byte[] getBlob(string name) {
        int col = reader.GetOrdinal(name);
        int bLength = (int)reader.GetBytes(col, 0, null, 0, int.MaxValue);
        byte[] bBuffer = new byte[bLength];
        reader.GetBytes(col, 0, bBuffer, 0, bLength);
        return bBuffer;
    }


reader - это MySqlDataReader полученный от вашего запроса.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Загрузка/выгрузка фото из БД

Сообщение Hash 26 мар 2012, 17:35

Мм.. не понял листинга выше совершенно.
Вот что в php на добавление фото -

$Photo = mysql_real_escape_string($_POST['Photo'], $db);
$IRC='';

$query = "INSERT INTO Table001 VALUES('$Name','$ThirdName','$City','$Mail','$Year','$Pass','$Sex','$Online','$Pol','$Photo','$IRC');";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());


Вот что в Unity3d -
Синтаксис:
Используется csharp
        var url = "file://1.png";
        var f = new WWW(url);
        //yield return f;

        var Photo_bytes = f.bytes;

        var form = new WWWForm();

        form.AddBinaryData("Photo", Photo_bytes);

        var download = new WWW(AddUser_Url, form);
        yield return download;


При такой загрузке в БД помещается 1байт (как я понял это картинка "Нет изображения").
Поэтому поиск гугла вывел на некий англоязычный форум, где указывалось, что лучше конвертировать и передавать строку.

Прошу дополнительной помощи)
Спасибо
Hash
UNIт
 
Сообщения: 61
Зарегистрирован: 06 апр 2011, 09:24

Re: Загрузка/выгрузка фото из БД

Сообщение Woolf 27 мар 2012, 01:00

Я чего-то не понял, а причём тут PHP? Вы на чем пишете вообще? Вроде на сишарпе..
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Загрузка/выгрузка фото из БД

Сообщение Hash 27 мар 2012, 09:15

Я пишу на c#, но LINQ не поддерживается, если вы про это. Так что переправляю в php скрипт на сервере
Hash
UNIт
 
Сообщения: 61
Зарегистрирован: 06 апр 2011, 09:24


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12