Android上传文件到服务器
转载请注明转自 : http://www.r-base.net/archives/360
我们很多时要与服务器进行接的数据,上传xml文件,服务器进行读取再返回xml文件的方式非常普遍.就如我的其中一个应用<<足球即时比分>>,更新比分信息时,就上传xml(因为数据量比较大,直接用参数方式不太适合,所以选择以文件作为参数)再由服务器端返回xml文件,再然后读取xml文件进行比分数据的更新操作.
以下的代码是<<足球即时比分>>应用的代码片段,代码只用到了Android自带的API,没有添加其它的jar包,以下代码只在需要上传文件时直接调用就可以了. 如果需要上传多个文件时,可以将多个文件进行压缩成一个文件再进行上传.(如何压缩文件或目录可以看我另一篇博文:[ Android压缩文件(压缩目录) ])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import java.io.File; import java.text.MessageFormat; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.FileEntity; import org.apache.http.impl.client.DefaultHttpClient; import android.util.Log; /** * 上传的url,f 为要上传的文件 * @url 上传的目标url * @f 要上传的文件 * @return 成功返回true,失败返回false */ public static boolean postFile(String url, File f) { if(url == null || f == null){ return false; } HttpClient client = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); HttpResponse response = null; try { FileEntity entity = new FileEntity(f, "binary/octet-stream"); httpPost.setEntity(entity); response = client.execute(httpPost); } catch (Exception e) { } finally { } // 判断上传的状态和打印调试信息 if (response != null && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // 打印调试信息,上传的url和上传的文件大小 Log.d("r-base.net", MessageFormat.format("upload xml success! url = [{0}], file size = [{1}]",url,f.length())); return true; } return false; } |
以上的代码是Android手机端的,在服务器只需要得到Request的InputStream,再写入文件就可以得到上传的文件服务器的代码如下:
1 2 3 4 | public String getFile(HttpServletRequest request){ InputSteam in = request.getInputStream(); org.apache.commons.io.IOUtils.copy(in,new OutputStream("c:/upload_file.file")); } |
相关推荐
86193952 2020-10-27
javaraylu 2020-06-28
我欲疾风前行 2020-06-18
小木兮子 2020-11-11
HeyShHeyou 2020-11-17
seanzed 2020-10-15
huangliuyu00 2020-09-24
libaoshan 2020-09-11
zhangpan 2020-09-10
chongxiaocheng 2020-08-16
xcguoyu 2020-08-15
Qizonghui 2020-08-02
ldcwang 2020-07-26
mqfcu 2020-07-21
jeason 2020-07-20
sunzhihaofuture 2020-07-19
knightwatch 2020-07-19