У меня есть удаленная база данных с MySQL, и я храню фотографии пользователей моего приложения в базе данных в виде строки базы данных с типом LONGTEXT.
Я преобразую фотографии в строку с Base64.
Я подключаюсь к своей удаленной базе данных с помощью JSON и PHP, потому что для этого мне нужно использовать Base64, потому что, как я знаю, JSON и PHP нужно отправлять строки с параметрами, а с Base64 я могу преобразовать фотографию в строку .
Работает нормально, но очень медленно. Когда я загружаю фотографию размером 100 КБ, это занимает много времени, но когда я загружаю фотографию объемом 5 КБ, это занимает всего две или три секунды.
Мой друг сказал мне использовать BLOB вместо Base64, но как мне использовать BLOB с JSON и подключением PHP к базе данных? Также мне нужно хранить изображения в строке таблицы USER
. Это связано с тем, что пользователи не имеют прав на загрузку файлов на удаленный сервер, но могут загружать фотографии, загружая их в виде строки в строке таблицы USER
.
спасибо
EDIT:
это код, в котором требуется время ожидания (оно ожидает в строке: while ((line = reader.readLine()) != null) {
, оно ожидает reader.readLine()
)
этот код получает одного пользователя из удаленной базы данных, требуется много времени, чтобы показать пользователя в моем приложении
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;
}