今天就跟大家聊聊有关Android中如何使用HttpURLConnection实现一个文件上传,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
成都创新互联公司长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为成安企业提供专业的成都做网站、成都网站建设、成都外贸网站建设,成安网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
客户端代码:
public static String uploadFile(String uploadUrl, String filePath) { Log.v(TAG, "url:" + uploadUrl); Log.v(TAG, "filePath:" + filePath); String nextLine = "\r\n"; String dividerStart = "--"; String boundary = "******"; try { URL url = new URL(uploadUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setChunkedStreamingMode(1024 * 256); connection.setDoInput(true); connection.setDoOutput(true); connection.setUseCaches(false); connection.setRequestMethod("POST"); // 设置Http请求头 connection.setRequestProperty("Connection", "Keep-Alive"); connection.setRequestProperty("Charset", "UTF-8"); //必须在Content-Type 请求头中指定分界符 connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); //定义数据写入流,准备上传文件 DataOutputStream dos = new DataOutputStream(connection.getOutputStream()); dos.writeBytes(dividerStart + boundary + nextLine); //设置与上传文件相关的信息 dos.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + filePath.substring(filePath.lastIndexOf("/") + 1) + "\"" + nextLine); dos.writeBytes(nextLine); FileInputStream fis = new FileInputStream(filePath); byte[] buffer = new byte[1024 * 32]; int count; // 读取文件内容,并写入OutputStream对象 while ((count = fis.read(buffer)) != -1) { dos.write(buffer, 0, count); } fis.close(); dos.writeBytes(nextLine); dos.writeBytes(dividerStart + boundary + dividerStart + nextLine); dos.flush(); // 开始读取从服务器传过来的信息 InputStream is = connection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); String result = br.readLine(); dos.close(); is.close(); connection.disconnect(); return result; } catch (IOException e) { e.printStackTrace(); } return null; }
服务器端代码:
看完上述内容,你们对Android中如何使用HttpURLConnection实现一个文件上传有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。