У меня есть удаленная база данных с MySQL, и я храню фотографии пользователей моего приложения в базе данных в виде строки базы данных с типом LONGTEXT.
Я преобразовываю фотографии в строку с помощью Base64.
Я подключаюсь к своей удаленной базе данных с помощью JSON и PHP, потому что для этого мне нужно использовать Base64, потому что, как я знаю, JSON и PHP должны отправлять строки параметров, а с помощью Base64 я могу преобразовать фотографию в строку .
Работает нормально, но очень медленно. Когда я загружаю фотографию размером 100 КБ, это занимает много времени, но когда я загружаю фотографию размером 5 КБ, это занимает всего две-три секунды.
Друг посоветовал мне использовать BLOB вместо Base64, но как мне использовать BLOB с JSON и PHP-подключением к базе данных? Кроме того, мне нужно сохранить изображения в строке таблицы USER
. Это связано с тем, что у пользователей нет прав на загрузку файлов на удаленный сервер, но они могут загружать фотографии, загружая их в виде строки в строке таблицы USER
.
спасибо
РЕДАКТИРОВАТЬ:
это код, в котором требуется некоторое время ожидания (он ждет в строке: while ((line = reader.readLine ())! = Null) {
, ожидает считывателя .readLine ()
)
этот код получает одного пользователя из удаленной базы данных, требуется loooooot времени, чтобы показать пользователя в моем приложении
public Friend RetrieveOneUser(String email)
{
Friend friend=null;
String result = "";
//the parameter data to send
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("email",email));
//http post
InputStream is=null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(this.BaseURL + this.GetOneUser_URL);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
//parse json data
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++)
{
JSONObject json_data = jArray.getJSONObject(i);
friend=new Friend(json_data.getString("email"),json_data.getString("password"), json_data.getString("fullName"), json_data.getString("mobilePhone"), json_data.getString("mobileOperatingSystem"),"",json_data.getString("photo"));
}
}
catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
return friend;
}