android文件的上传

在写android软件时,我们需要和服务器进行交互,所以这个时候就需要用到了上传以及下载。
下载的操作我们使用IO流就可以完成了,所以我们主要讲一下上传文件。
因为需要和服务器进行交互,所以上传文件也是需要进行网络访问的,所以和下载一样,需要用到URL网络请求。同时,上传文件是给服务器发送文件,所以,这个时候就需要用到了网络访问的两种请求方式之一的POST请求。
下面我们来看一下代码:
首先,我们需要写URL网络请求;

//URL网络访问
URL url = new URL(uri);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();

写完网络访问之后,给设置POST请求

connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");

之后,我们来写请求体

//设置请求体
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("-----------------------------7e324741816d4\r\n");
stringBuilder.append("Content-Disposition: form-data; name=\"file\"; filename=\""+encode+"\"\r\n");//encode是在服务器上显示的名字
stringBuilder.append("Content-Type:media/mp3\r\n");
stringBuilder.append("\r\n");

写请求头

//设置请求头
File file = new File(path);
byte[] bytes = stringBuilder.toString().getBytes("UTF-8");
connection.setRequestProperty("Content-Length",bytes.length+file.length()+"");
connection.setRequestProperty("Content-Type","multipart/form-data; boundary=7e324741816d4");

之后就是和下载一样的边读边写操作了

byte[] b = new byte[1024];
int len = 0;
outputStream.write(bytes);//注意,需要把请求体给先写入进去
while((len = fileInputStream.read(b))!=-1){
 outputStream.write(b,0,len);
}

最后,我们需要进行一个判断,如果不进行判断,则服务器回处于空闲状态

if (connection.getResponseCode()==200{
}

这样,一个简单的文件上传我们就写好了,感谢观看,希望该文章能给您带了一些帮助。

你可能感兴趣的:(android文件的上传)