//实现线程
Runnable uploadFile=new Runnable() {
@Override
public void run() {
try {
URL url=new URL(uploadUrl);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
//使用inputstream与outputstream,不使用缓存
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
//设置HTTP请求方法,请求信息
connection.setRequestMethod("POST");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Charset", "UTF-8");
connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
//获得outputstream,上传文件
DataOutputStream outputStream=new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(twoHyphens+boundary+end);
//设置与上传文件相关信息
outputStream.writeBytes("Content-Disposition:form-data;name=\"file\";filename\"" +
fileName.substring(fileName.lastIndexOf("/")+1)+"\""+end);
//在上传文件信息与文件内容之间必须有一个空格
outputStream.writeBytes(end);
//上传文件
FileInputStream inputStream=new FileInputStream(fileName);
Log.d(TAG,fileName);
byte[] bytes=new byte[8192];
int count=0;
while ((count=inputStream.read(bytes))>0){
outputStream.write(bytes,0,count);
}
inputStream.close();
outputStream.writeBytes(end);
//设置结束符号
outputStream.writeBytes(twoHyphens + boundary + twoHyphens + end);
outputStream.flush();
//读取从服务器传过来的信息
InputStream is=connection.getInputStream();
InputStreamReader inputStreamReader=new InputStreamReader(is,"utf-8");
BufferedReader reader=new BufferedReader(inputStreamReader);
String result=reader.readLine();
is.close();
outputStream.close();
Message message=handler.obtainMessage();
message.what=0x101;
handler.sendMessage(message);
} catch (Exception e) {
e.printStackTrace();
}
}
};
//处理消息
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what==0x101){
Toast.makeText(UploadFileActivity.this,"上传文件成功!",Toast.LENGTH_SHORT).show();
}
super.handleMessage(msg);
}
};
//只需要在需要的地方开启线程即可
<pre name="code" class="java"> new Thread(uploadFile).start();
通过HttpURLConnection上传文件
最新推荐文章于 2023-10-31 12:41:34 发布