本文实例讲述了Golang+Android基于HttpURLConnection实现的文件上传功能。分享给大家供大家参考,具体如下:

这里要演示的是使用Android程序作为客户端(使用HttpURLConnection访问网络),Golang程序作为服务器端,实现文件上传。
客户端代码:
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;
}
服务器端代码:
复制代码 代码如下:package webserver
//接收客户端通过http上传的文件
//Date: 2015-3-25 16:18:33
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
)
func UpLoadBase() {
fmt.Println("This is uploadbase")
http.HandleFunc("/httpUploadFile", handleUploadFile)
http.ListenAndServe(":8086", nil)
if err != nil {
fmt.Println("ListenAndServe error: ", err.Error())
}
}
func handleUploadFile(w http.ResponseWriter, r *http.Request) {
fmt.Println("client:", r.RemoteAddr)
file, fileHeader, err := r.FormFile("file")
if err != nil {
log.Fatal("FormFile:", err.Error())
return
}
defer func() {
if err := file.Close(); err != nil {
log.Fatal("Close:", err.Error())
return
}
}()
//文件名
fileName := fileHeader.Filename
if fileName == "" {
log.Fatal("Param filename cannot be null.")
return
}
//文件内容
bytes, err := ioutil.ReadAll(file)
//写到服务端本地文件中
outputFilePath := "/home/admin/桌面/" + fileName
err = ioutil.WriteFile(outputFilePath, bytes, os.ModePerm)
if err != nil {
log.Fatal("WriteFileError:", err.Error())
return
}
w.Write(([]byte)("上传文件成功!"))
}
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Golang
# Android
# HttpURLConnection
# 文件上传
# Golang实现http文件上传小功能的案例
# Golang实现http server提供压缩文件下载功能
# 详解Django关于StreamingHttpResponse与FileResponse文件下载的最
# golang实现http server提供文件下载功能
# Golang 使用http Client下载文件的实现方法
# Go 语言实现 HTTP 文件上传和下载
# 上传文件
# 客户端
# 的是
# 进阶
# 相关内容
# 感兴趣
# 给大家
# 写到
# 更多关于
# 解决方法
# 所述
# 程序设计
# 服务端
# 上传
# 讲述了
# Content
# Type
# Charset
# UTF
相关文章:
活动邀请函制作网站有哪些,活动邀请函文案?
如何挑选优质建站一级代理提升网站排名?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
小型网站建站如何选择虚拟主机?
微信小程序 五星评分(包括半颗星评分)实例代码
网站制作软件有哪些,制图软件有哪些?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
如何有效防御Web建站篡改攻击?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
小建面朝正北,A点实际方位是否存在偏差?
如何选择香港主机高效搭建外贸独立站?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
广州建站公司哪家好?十大优质服务商推荐
如何在Windows服务器上快速搭建网站?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何彻底卸载建站之星软件?
已有域名如何快速搭建专属网站?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
C++如何编写函数模板?(泛型编程入门)
建站之星如何取消后台验证码生成?
如何快速建站并高效导出源代码?
建站主机无法访问?如何排查域名与服务器问题
建站之星后台管理:高效配置与模板优化提升用户体验
黑客如何利用漏洞与弱口令入侵网站服务器?
孙琪峥织梦建站教程如何优化数据库安全?
MySQL查询结果复制到新表的方法(更新、插入)
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
定制建站价位费用解析与套餐推荐全攻略
建站之星如何防范黑客攻击与数据泄露?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
实例解析Array和String方法
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
制作营销网站公司,淘特是干什么用的?
网站企业制作流程,用什么语言做企业网站比较好?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
Python文件管理规范_工程实践说明【指导】
网站好制作吗知乎,网站开发好学吗?有什么技巧?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
如何在阿里云ECS服务器部署织梦CMS网站?
C#怎么使用委托和事件 C# delegate与event编程方法
微课制作网站有哪些,微课网怎么进?
香港服务器选型指南:免备案配置与高效建站方案解析
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何选择CMS系统实现快速建站与SEO优化?
建站之星如何开启自定义404页面避免用户流失?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
*请认真填写需求信息,我们会在24小时内与您取得联系。