引言:本来android文件上传的博客在网上挺多的,不过好些都只是有前台android端的上传,并没有后台服务器端的接收。而且自己写的时候也确实遇见了一些之前没注意到的地方,写出来也算是给自己提个醒。
我这里就不把全部的代码都贴出来了,就只贴一下核心代码就算了,如果有什么疑问或者不对的地方,欢迎指教。
我要做的是把我app的日志文件上传到指定服务器的功能。并没有写的太复杂,我参考鸿洋大神的博客的时候,看他对DataOutputStream写入了headinfo和endinfo,但是我没理解这样写的目的,所以也没加,如果有知道的可以告诉我呦。
废话不多说,直接上代码。
下面是android端上传文件代码:

    /*** 上传文件到服务器* @param context* @param uploadUrl     上传服务器地址* @param oldFilePath       本地文件路径*/public static void uploadLogFile(Context context, String uploadUrl, String oldFilePath){try {URL url = new URL(path);  HttpURLConnection con = (HttpURLConnection)url.openConnection();// 允许Input、Output,不使用Cachecon.setDoInput(true);con.setDoOutput(true);con.setUseCaches(false);con.setConnectTimeout(50000);con.setReadTimeout(50000);// 设置传送的method=POSTcon.setRequestMethod("POST");//在一次TCP连接中可以持续发送多份数据而不会断开连接con.setRequestProperty("Connection", "Keep-Alive");//设置编码con.setRequestProperty("Charset", "UTF-8");//text/plain能上传纯文本文件的编码格式con.setRequestProperty("Content-Type", "text/plain");// 设置DataOutputStreamDataOutputStream ds = new DataOutputStream(con.getOutputStream());// 取得文件的FileInputStreamFileInputStream fStream = new FileInputStream(oldFilePath);// 设置每次写入1024bytesint bufferSize = 1024;byte[] buffer = new byte[bufferSize];int length = -1;// 从文件读取数据至缓冲区while ((length = fStream.read(buffer)) != -1) {// 将资料写入DataOutputStream中ds.write(buffer, 0, length);}ds.flush();fStream.close();ds.close();if(con.getResponseCode() == 200){logger.info("文件上传成功!上传文件为:" + oldFilePath);}} catch (Exception e) {e.printStackTrace();logger.info("文件上传失败!上传文件为:" + oldFilePath);logger.error("报错信息toString:" + e.toString());}}

服务器这里我是用我自己本地的tomcat做的测试服务器,这个你们可以通过配置文件或者自己指定服务器。
下面是服务器端接收文件代码:

@RequestMapping(value = "/uploadFile")public void uploadFile(HttpServletRequest request, HttpServletResponse response)  throws IOException  {  InputStream is = request.getInputStream();DataInputStream dis = new DataInputStream(is);String result = "";try {result = saveFile(dis);} catch (Exception e) {e.printStackTrace();result = "uploaderror";}request.getSession().invalidate();response.setContentType("text/html;charset=UTF-8");ObjectOutputStream dos = new ObjectOutputStream(response.getOutputStream());dos.writeObject(result);dos.flush();dos.close();dis.close();is.close();}/*** 保存文件* @param dis* @return*/private String saveFile(DataInputStream dis) {String fileurl = "F:/apache-tomcat-7.0.70/webapps/upload/2017-06-12.log";File file = new File(fileurl);if (!file.exists()) {try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}FileOutputStream fps = null;try {fps = new FileOutputStream(file);} catch (FileNotFoundException e) {e.printStackTrace();}int bufferSize = 1024;byte[] buffer = new byte[bufferSize];int length = -1;try {while ((length = dis.read(buffer)) != -1) {fps.write(buffer, 0, length);}} catch (IOException e) {e.printStackTrace();}try {fps.flush();fps.close();} catch (IOException e) {e.printStackTrace();}return "success";}

个人情况总结:我个人出现的情况是,上传的文件没有数据,就是DataOutputStream在服务器端接收的时候,是没内容的,可是我在android端调试的时候,明明是能看到数据,后来找了1天时间,找到了原因。因为我上传的是日志文件,属于纯文本文件,可是最开始我设置http中Content-Type格式的时候,我设置的是multipart/form-data格式,到后面改成text/plain格式才能正常上传(之前的我是在网上直接扒下来的,坑~)。所以这里的格式要根据你实际的文件类型来设置。
这里关于Content-Type格式的问题,我参考了以下博客,更详细的讲解可过去看看:
http://blog.csdn.net/blueheart20/article/details/45174399

常见的媒体格式类型如下:

    text/html : HTML格式text/plain :纯文本格式     text/xml :  XML格式image/gif :gif图片格式   image/jpeg :jpg图片格式image/png:png图片格式

以application开头的媒体格式类型:

   application/xhtml+xml :XHTML格式application/xml     : XML数据格式application/atom+xml  :Atom XML聚合格式   application/json    : JSON数据格式application/pdf       :pdf格式 application/msword  : Word文档格式application/octet-stream : 二进制流数据(如常见的文件下载)application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

另外一种常见的媒体格式是上传文件之时使用的:

    multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

以上就是我们在日常的开发中,经常会用到的若干content-type的内容格式。

android上传文件至服务器(android端+服务器端)相关推荐

  1. android -上传文件到服务器

    android上传文件到服务器       重点:最好是设置好content-type这些参数的配置!     package com.spring.sky.image.upload.network; ...

  2. Android上传文件至服务器(转)

    本实例实现每隔5秒上传一次,通过服务器端获取手机上传过来的文件信息并做相应处理:采用Android+Struts2技术. 一.Android端实现文件上传 1).新建一个Android项目命名为and ...

  3. android 上传文件到服务器

    1.编写layout.xml <LinearLayout android:layout_width="match_parent"android:layout_height=& ...

  4. Android上传文件到服务器500,使用WebUploader解决安卓微信浏览器上传图片中遇到的bug...

    摘自个人博客:走啊走的记录,欢迎点击查看,效果更佳! 微信浏览器上传图片bug的原因 微信在新版本中采用的是自己的X5内核浏览器,而在较老的版本中还有可能是安卓的原生浏览器.具体的环境我也不太了解,但 ...

  5. android上传文件到服务器(图片、文本等)

    首先,在项目中导入SmartAndroid.jar包. 然后加入相应的方法: public void uploadFile(String imagePath){//服务器端地址String url = ...

  6. Android 上传文件,图片。以及服务器端接收相关。

    前面一篇文章写了实现照相功能的一个例子,其实那个实现效果是个略缩图.要查看全图就要先指定照片的存放路径.以后我会修改那个文章.今天先说下图片,文件等上传的实现.接着拿照片说事,光照完了不行还得往服务器 ...

  7. android上传字符串到服务器,Android上传文件到服务器

    Android要实现文件上传,可以利用Socket上传,也可以模拟Web进行上传,但是如果是使用第一种方式上传,严格的话就得使用TCP,这样容易生成系统死掉,或者是长时间等待,如果是UDP来传,就容易 ...

  8. Android上传文件至服务器

    转自:http://www.cnblogs.com/linjiqin/archive/2011/11/09/2242579.html 转载于:https://www.cnblogs.com/lomom ...

  9. jsch 移动服务器上文件,jsch上传文件到服务器

    需求就是上传文件到服务器,服务器的存储地址由程序决定然后可以自动创建. 使用第三方:jsch JSch 是SSH2的一个纯Java实现.它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文 ...

最新文章

  1. python获取登录按钮_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。
  2. MFC第三节-多线程
  3. CLR 基本概念理解
  4. 工程搭建:搭建子工程之搭建实体类模块和lombok插件
  5. c include 多层目录_Rsync 秒杀一切备份工具,你能手动屏蔽某些目录吗?
  6. 24v开关电源维修技巧_康佳LED液晶彩电KPS+L1900C301电源板原理与维修
  7. 获取两个圆的重合部分的经纬度_(2)万向节的装配和动画仿真:重合同轴心装配约束很常用...
  8. 在php 添加时间,在PHP中添加时间
  9. Android 8.0 学习 (26)---Android8.0 Power Menu 添加截屏选项
  10. STM8 ADC转换模式-------单次扫描模式
  11. 反射创建对象_面试题汇集——java反射
  12. 风变Python3---if条件相关的学习
  13. ASP.NET MVC搭建项目后台UI框架—9、服务器端排序
  14. Pycharm 主题设置和修改
  15. Word VBA-图片操作汇总
  16. linux终端字体安装,在Gnome-terminal下安装以及使用Monaco字体
  17. 单片机原理与应用技术(一)———51单片机延时汇编语言
  18. 两分钟教你玩转千图成像Part1~
  19. 工业4.0智能电批扭力输出异常问题
  20. tm4c123g c语言,Tm4c123GX(tiva)入门详细教程

热门文章

  1. 浦东朋友夏天的时间线
  2. 马云卸任后去蹦迪了?都是假的。
  3. 联想m415节能产品认证证书_节能认证
  4. C语言线程关闭会释放自动释放,[求助]关于C语言多线程内存释放的问题
  5. 天津轻工职业技术学院计算机专业怎么样,天津轻工职业技术学院可以转专业吗,天津轻工职业技术学院新生转专业政策...
  6. hangye5:2345导航将出嫁史玉柱 网址站出路大盘点
  7. 泰克示波器DPO3054自校准SPC失败维修
  8. 记一次java面试(小黑鱼)
  9. Android 画中画(视频)
  10. Beginning WF4读书笔计 - 第一章 03设计示图及xaml代码