我有一个带有MySQL的远程数据库,并且将我的应用程序用户的照片存储在数据库中,作为LONGTEXT类型的数据库的一行。
我使用Base64将照片转换为字符串。
我使用JSON和PHP连接到远程数据库,因此,我必须使用Base64,因为据我所知,JSON和PHP需要在参数上发送字符串,而使用Base64可以将照片转换为字符串。
可以,但是非常慢。当我加载100 KB的照片时,会花费很多时间,但是当我加载5 KB的照片时,则只需要两到三秒钟。
一位朋友告诉我使用BLOB代替Base64,但是如何将BLOB与JSON和与数据库的PHP连接一起使用?另外,我需要将图像存储在表的一行上USER
。这是因为用户没有特权将文件上传到远程服务器,但是他们可以通过将照片作为字符串上传到表的行中来上传照片USER
。
谢谢
编辑:
这是需要花大量时间等待的代码(它在以下行中等待: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;
}
将请求分为两部分:
我假设您使用http://example.com/userinfo/xxx之类的端点作为返回JSON的端点?添加一个http://example.com/userinfo_image/xxx之类的终结点以仅返回图像,然后可以将其作为二进制块返回,而不是通过Base64在JSON中进行编码。
这意味着您发出两个HTTP请求而不是一个,但是根据应用程序的不同,您也许可以异步加载图像,如果这样,从用户角度来看,通常可以从感知的应用程序响应时间中获得很大的收益。
有关在后台延迟加载图像的信息,请参阅Android Developers博客上的示例文章:
http://android-developers.blogspot.com/2010/07/multithreading-for-
performance.html
如果您不能延迟加载图像,请考虑同时对图像和JSON进行并行请求。随着图像的二进制版本占用更少的网络带宽,并且一旦将数据传输到手机上,所需的处理也就更少了,它看起来仍然应该更快。
问题内容: 我针对正常运行的Web应用程序进行了一系列功能测试,但是每个功能测试都需要通过和注释提供的类级别的设置和拆卸,因此需要JUnit 4.0或更高版本。 现在,我想使用少量的这些功能测试来执行负载测试,这些功能测试可以模拟大量请求Web应用程序相关页面的用户。为了让每个用户在JWebUnit中都有自己的“模拟浏览器”,我需要在JUnitPerf中使用TestFactory来实例化测试中的类
问题内容: 我正在尝试开发一个JMS 独立应用程序 来读写MQSeries上的Queue。我的老板要求我使用 纯Java JMS (而不是ibm.mq lib)来执行此操作。 这是建立jms连接所需的信息: 您知道该怎么做?还是您有任何链接教我做到这一点。 问题答案: 这里的问题是“我的老板要求我使用纯Java JMS(不是ibm.mq lib)来做到这一点”的要求。JMS是一个规范,每个实现都必
问题内容: 我正在尝试使用node.js制作Samsung Smart TV应用程序。 在我的项目中,我想使我的应用程序与服务器PC通信。 根据许多网站,我可以使用“ jsonp”来做到这一点。 这是我发现的客户端代码。 而且,这是我发现的服务器端代码。 这些代码在我的PC(服务器PC)上正常工作,但是当我在其他计算机上打开客户端页面时,它不起作用。 控制台只给我这个日志: 我想使用jsonp处理
我想用Netty ChannelHandler用Gzip压缩和解压,我试了一段时间,但总是有点困难。我的代码如下: 有什么问题吗?
我有一个测试Web服务项目,我在其中使用REST(泽西)JSON Spring。问题是我不知道如何将它们组合在一起。例如,我有一个have类,它可以与数据库一起使用: 我还有一个JSON类,它获取并返回JSON中的对象: 现在我试着把它们结合起来。我想从DB中获取数据,并将其转换为JSON,然后在响应中返回: 当我用最后一个组合开始项目时,我得到了这个错误: 我的pom.xml: My web.x
https://cloud.spring.io/spring-cloud-static/spring-cloud-stream-binder-kafka/3.0.0.M3/reference/html/spring-cloud-stream-binder-kafka.html#_programming_model显示了一个示例,其中可以使用属性设置输入主题。 现在我想使用依赖注入,例如。 启动应用