从android手机上传到服务器的图片如何立即返回在手机控件上显示?
你需要写一个方法,读取网络,在上传操作完成后,调用这个方法,
这个是我经常用的读取网络的方法,你参考一下:
//url为的网络地址,
public static Bitmap getImg(String url)
{
URL imgurl = null;
Bitmap bitmap = null;
try
{
imgurl = new URL(url);
}
catch(MalformedURLException e)
{
eprintStackTrace();
}
try
{
HttpURLConnection conn = (HttpURLConnection)imgurlopenConnection();
connsetRequestMethod("POST");
connsetDoInput(true);
connsetDoOutput(true);
connsetUseCaches(false);
connconnect();
InputStream is = conngetInputStream();
bitmap = BitmapFactorydecodeStream(is);
isclose();
conndisconnect();
}catch(IOException e)
{
eprintStackTrace();
}
return bitmap;
}
然后在要显示的的activity里,将这个方法传给imageview就可以了
imageviewsetImageBitmap(MainActivitygetImg(url));
一、引入三个jar 包:
commons-codec-13jar
commons-httpclient-31jar
commons-logging-11jar
二、将sd卡中的文件上传到服务器上。
1、在layout下的布局xml文件:
<EditText //文本框 ,被上传文件的路径。
android:id="@+id/et_file_path"
android:layout_width="match_parent"
android:text="/mnt/sdcard/ajpg"
android:layout_height="wrap_content" >
</EditText>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="uploadfile"//指定按钮点击的事件
android:text="上传文件" />
2、在activity类中的 上传按钮的点击的方法
// 把sd卡上的文件上传到服务器上
public voiduploadfile(View view){
//获取被上传文件的路径
String filepath = et_file_pathgetText()toString()trim();
if(TextUtilsisEmpty(filepath)){
ToastmakeText(this,"文件路径不能为空", 0)show();
return ;
}
File file = new File(filepath);
if(fileexists()){//判断上传的文件是否存在
//获取上传文件的服务端的路径
String path =getResources()getString(Rstringuploadurl);
//调用做上传的方法;
String result =NetServiceuploadfile(path, file);
if(result!=null){
ToastmakeText(this,result, 0)show();
}else{
ToastmakeText(this,"上传文件失败", 0)show();
}
}else{
ToastmakeText(this,"文件不存在", 0)show();
return ;
}
}
}
3、在service中做上传的方法:
public static String uploadfile(String path, File file) {
try {
PostMethod filePost = newPostMethod(path);
//指定上传的文件和参数
Part[] parts = { new StringPart("name","zhangsan"),
newStringPart("password", "123"),//参数
newFilePart("file", file) };//上传的文件
//设置请求体
filePostsetRequestEntity(new MultipartRequestEntity(parts,
filePostgetParams()));
//创建httpClient对象
orgapachecommonshttpclientHttpClient client = neworgapachecommonshttpclientHttpClient();
//设置超时时长5秒
clientgetHttpConnectionManager()getParams()
setConnectionTimeout(5000);
//执行
int status = clientexecuteMethod(filePost);
return "上传成功";
}
catch (Exception e) {
return "上传失败";
}
finally {
//filePostreleaseConnection();
}
}
这个存放的位置是根据你的来源而定的。一般是放在sdcard下的某个目录下的,我基本看明白你写的需求。我来给你说下思路:服务端(android手机)这边需要写个工具类,来遍历SD卡下的文件,只显示jpg和png的。主类中有个按钮来添加,还有一个按钮是用来上传,然后写个监听,用来接收服务端发回的消息。文件的传输就不用我细说了吧服务端这边写个监听来接收客户端发来的消息,保存发过来的数据流。至于手机上能显示这张,只要在写个imageview,把资源加载上就ok啦,你可以去网上搜索一下“sd上的文件上传”,有很多类似的文章和代码,可供学习的,有什么不懂的再问吧^_^
0条评论