1.创建一个Dynamic Web project工程,指定其服务器,我们这里用的是Tomcat7.0,新建index.jsp文件,其内容如下:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <form action="Upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" ></br> <input type="submit" name="submit"></br> </form> </body> </html>
2.新建一个form action对应的Servlet。
/** * Servlet implementation class Upload */ @WebServlet("/Upload") @MultipartConfig(location="G:\\") //指定文件上传的地址这里是G盘 public class Upload extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Upload() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Part part = request.getPart("file"); part.write("dsa.jpg"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); out.write("upload success"); } }
到这里Web就已经配置完了,打开浏览器运行一遍
选择完文件并提交这文件就在本地的G盘下了,提交时,打开Google浏览器开发者工具查看header,即请求头信息,以助在后面Android客户端开发
设置连接请求时的参数对照
3.Android客户端创建一个UploadThread
package com.pt.http01; import android.util.Log; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; /** * Created by 韬 on 2016-05-14. */ public class UploadThread extends Thread{ private String url; private String filename; private static final String TAG = "UploadThread"; public UploadThread(String url,String filename){ this.url = url; this.filename = filename; } @Override public void run() { String boundary = "---------------------------7e02933960556"; String prefix = "--"; String end = "\r\n"; try { URL httpurl = new URL(url); HttpURLConnection conn = (HttpURLConnection) httpurl.openConnection(); conn.setRequestMethod("POST"); conn.setDoInput(true); conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); DataOutputStream out = new DataOutputStream(conn.getOutputStream()); out.writeBytes(prefix + boundary + end); out.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + "dsa.jpg" + "\"" + end); FileInputStream inputStream = new FileInputStream(new File(filename)); byte[] data = new byte[1024*4]; int len = 0; while ((len = inputStream.read(data)) != -1){ out.write(data,0,len); } out.writeBytes(end); out.writeBytes(prefix + boundary + prefix + end); out.flush(); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuffer sb = new StringBuffer(); String str; while((str = reader.readLine()) != null){ sb.append(str); } Log.i(TAG, "run: \"reponse\"" + sb.toString()); if (out != null){ out.close(); } if(reader != null){ reader.close(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
相关推荐
在Android应用开发中,文件上传和文件选择器是常见的功能需求。用户可能需要从设备存储中选择一个或多个文件,例如图片、文档或音频文件,然后上传到服务器或进行其他操作。本文将深入探讨如何在Android平台上实现...
- 大文件上传时,网络环境的不稳定可能导致传输中断,因此需要支持断点续传,即记录已上传的部分,在下次传输时继续从该位置开始。 - 需要优化内存管理,避免一次性加载整个大文件到内存,防止内存溢出。 3. **...
在Android开发中,文件上传是一项常见的任务,尤其是图片或视频等多媒体内容的分享。当涉及到通过网络进行文件传输时,Socket通信是一种基础且灵活的方法。本篇将详细讲解如何在Android应用中实现基于Socket方式的...
相比GET,POST没有长度限制,更适合用于提交大量数据,如文件上传。 #### 三、HTTP协议上传文件实践 根据题目中的部分内容,我们将详细介绍如何使用HTTP协议上传文件至Web应用。 ##### 3.1 通过GET方式提交参数给...
在标题"android大文件分段上传"中提到的方法,是通过使用Socket流将大文件分段进行上传,这是一种有效应对大文件传输问题的策略。下面我们将详细探讨这一技术。 首先,了解Socket的基本概念。Socket是网络编程中的...
在Android应用开发中,HTTP通信是连接客户端与服务器端的重要桥梁,主要用于数据交换、文件上传和下载等操作。本示例将重点讲解如何在Android应用中实现基于HTTP的JSON数据传递,以及如何处理文件的上传和下载。 ...
在Android应用开发中,文件上传是一项常见的任务,尤其是在处理大文件或者需要提高用户交互体验时,多线程技术显得尤为重要。本主题聚焦于"Android多线程文件上传",我们将探讨如何利用多线程技术来优化文件上传过程...
在Android应用开发中,有时需要将本地文件上传到服务器,以实现数据同步或者备份功能。在本场景中,我们讨论的是如何将Android设备上的文件上传到由C#编写的Web服务(WebService)。以下是对这个过程的详细解释: 1...
总之,Android大文件上传涉及到文件分块、网络通信、内存管理、用户交互等多个方面,需要综合运用多种技术和策略来确保上传的稳定性和效率。通过不断实践和优化,我们可以创建出满足用户需求的文件上传功能。
在Android开发中,有时我们需要实现自定义的HTTP通信,尤其是涉及到文件上传的场景。"android手写Http协议上传文件"这个主题就是关于如何利用Socket编程实现一个简单的HTTP协议来上传本地文件到服务器的过程。下面将...
在Android应用开发中,网络通信是一项基础且重要的功能,尤其在数据交换、文件上传和下载等方面。本案例主要探讨如何利用HTTP协议在Android环境中实现文件上传。HTTP(超文本传输协议)是互联网上应用最广泛的一种...
在Android应用开发中,有时需要将用户在设备上拍摄或选择的图片文件上传到服务器进行存储、处理或分享。这个过程通常涉及到网络通信,而PHP作为服务器端的脚本语言,常用于处理这些请求。本项目是关于如何利用...
在Android平台上,通过HTTP协议上传文件是一项常见的任务,特别是在开发移动应用时,用户可能需要将本地照片、视频或其他数据发送到服务器。本篇文章将详细讲解如何利用`HttpURLConnection`类来实现在Android设备上...
在Android平台上进行FTP文件上传,通常涉及到网络编程和文件操作,这两个方面是Android开发中的重要组成部分。FTP(File Transfer Protocol)是一种广泛使用的网络协议,用于在客户端和服务器之间传输文件。Socket是...
在Android平台上,Socket通信是一种常见的网络...以上就是使用Socket在Android中实现文件上传和下载的基本步骤和注意事项。实际开发中,可能还需要考虑多线程处理、断点续传、进度显示等功能,以提供更好的用户体验。
首先,理解Android中的文件上传流程。通常包括以下步骤: 1. **文件准备**:在上传前,你需要确保文件已经存在于设备上。`audioRecordTest`可能是一个音频录制测试文件,表明你可能在应用中进行了音频录制并保存了...
在Android开发中,文件上传是一项常见的任务,尤其是在处理大文件如视频时,为了提高用户体验,断点上传就显得尤为重要。断点上传允许用户在中断网络连接后从上次中断的地方继续上传,而不需要重新开始。本案例将...
在Android开发中,断点上传是一项重要的功能,它允许用户在网络连接不稳定或者设备突然断电的情况下,能够继续之前未完成的文件上传过程。这通常涉及到网络编程,特别是使用Socket通信机制来实现。以下是对这个主题...
通过分析这些源码,开发者可以学习到实际项目中文件上传下载的最佳实践,理解网络通信、多线程、文件操作等关键知识点,并且可以参考代码结构和设计模式优化自己的项目。 总之,这个资源为Android开发者提供了宝贵...
在Android应用开发中,文件上传是一项常见的功能,例如用户可能需要将照片、文档或音频文件上传到服务器。这个"Android 手机文件上传示例"的压缩包提供了一个实际的项目源码,可以帮助开发者理解如何在Android环境中...