android文件上传
2016-05-06 17:56
441 查看
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity
{
private String newName = "xxx.mp3";
//要上传的本地文件路径
private String uploadFile = "/data/data/com.xzq/xxx.mp3";
//上传到服务器的指定位置
private String actionUrl = "http://xxx/upload/xxx.jsp";
private TextView mTextView1;
private TextView mTextView2;
private Button mButton1;
@Override
public void onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView1 =
(TextView) findViewById(R.id.myText2);
mTextView1.setText("FilePath:/n" + uploadFile);
mTextView2 =
(TextView) findViewById(R.id.myText3);
mTextView2.setText("UploadPath:/n" + actionUrl);
/* 设定mButton的onClick事件处理 */
mButton1 =
(Button) findViewById(R.id.myButton);
mButton1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View
v)
{
uploadFile();
}
});
}
private void uploadFile()
{
String end = "/r/n";
String Hyphens = "--";
String boundary = "*****";
try
{
URL url = new URL(actionUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
/* 允许Input、Output,不使用Cache
*/
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
/* 设定传送的method=POST
*/
con.setRequestMethod("POST");
/* setRequestProperty */
con.setRequestProperty("Connection", "Keep-Alive");
con.setRequestProperty("Charset", "UTF-8");
con.setRequestProperty("Content-Type",
"multipart/form-data;boundary=" +
boundary);
/* 设定DataOutputStream
*/
DataOutputStream ds = new DataOutputStream(con.getOutputStream());
ds.writeBytes(Hyphens + boundary + end);
ds.writeBytes(
"Content-Disposition: form-data; name=\"avatar\"; filename=\""+newName+"\""+end
);
ds.writeBytes(end);
/* 取得文件的FileInputStream
*/
FileInputStream fStream = new FileInputStream(uploadFile);
/* 设定每次写入1024bytes
*/
int bufferSize
= 1024;
byte[]
buffer = new byte[bufferSize];
int length
= -1;
/* 从文件读取数据到缓冲区 */
while ((length
= fStream.read(buffer)) != -1)
{
/* 将数据写入DataOutputStream中 */
ds.write(buffer, 0, length);
}
ds.writeBytes(end);
ds.writeBytes(Hyphens + boundary + Hyphens + end);
fStream.close();
ds.flush();
/* 取得Response内容 */
InputStream is = con.getInputStream();
int ch;
StringBuffer b = new StringBuffer();
while ((ch
= is.read()) != -1)
{
b.append((char)
ch);
}
System.out.println("上传成功");
Toast.makeText(MainActivity.this, "上传成功",
Toast.LENGTH_LONG)
.show();
ds.close();
} catch (Exception
e)
{
System.out.println("上传失败" +
e.getMessage());
Toast.makeText(MainActivity.this, "上传失败" +
e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}
第二种方法使用httpmime-4.1.2.jar
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(
CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost httppost = new HttpPost(actionUrl);
MultipartEntity entity = new MultipartEntity();
FileBody fileBody = new FileBody(uploadFile);
entity.addPart("avatar", fileBody); //<input type="file" name="avatar" id="fileToUpload"/>
httppost.setEntity(entity);
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
HTTPTools.Log(EntityUtils.toString(resEntity) );
}
if (resEntity != null) {
resEntity.consumeContent();
}
httpclient.getConnectionManager().shutdown();
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity
{
private String newName = "xxx.mp3";
//要上传的本地文件路径
private String uploadFile = "/data/data/com.xzq/xxx.mp3";
//上传到服务器的指定位置
private String actionUrl = "http://xxx/upload/xxx.jsp";
private TextView mTextView1;
private TextView mTextView2;
private Button mButton1;
@Override
public void onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView1 =
(TextView) findViewById(R.id.myText2);
mTextView1.setText("FilePath:/n" + uploadFile);
mTextView2 =
(TextView) findViewById(R.id.myText3);
mTextView2.setText("UploadPath:/n" + actionUrl);
/* 设定mButton的onClick事件处理 */
mButton1 =
(Button) findViewById(R.id.myButton);
mButton1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View
v)
{
uploadFile();
}
});
}
private void uploadFile()
{
String end = "/r/n";
String Hyphens = "--";
String boundary = "*****";
try
{
URL url = new URL(actionUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
/* 允许Input、Output,不使用Cache
*/
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
/* 设定传送的method=POST
*/
con.setRequestMethod("POST");
/* setRequestProperty */
con.setRequestProperty("Connection", "Keep-Alive");
con.setRequestProperty("Charset", "UTF-8");
con.setRequestProperty("Content-Type",
"multipart/form-data;boundary=" +
boundary);
/* 设定DataOutputStream
*/
DataOutputStream ds = new DataOutputStream(con.getOutputStream());
ds.writeBytes(Hyphens + boundary + end);
ds.writeBytes(
"Content-Disposition: form-data; name=\"avatar\"; filename=\""+newName+"\""+end
);
ds.writeBytes(end);
/* 取得文件的FileInputStream
*/
FileInputStream fStream = new FileInputStream(uploadFile);
/* 设定每次写入1024bytes
*/
int bufferSize
= 1024;
byte[]
buffer = new byte[bufferSize];
int length
= -1;
/* 从文件读取数据到缓冲区 */
while ((length
= fStream.read(buffer)) != -1)
{
/* 将数据写入DataOutputStream中 */
ds.write(buffer, 0, length);
}
ds.writeBytes(end);
ds.writeBytes(Hyphens + boundary + Hyphens + end);
fStream.close();
ds.flush();
/* 取得Response内容 */
InputStream is = con.getInputStream();
int ch;
StringBuffer b = new StringBuffer();
while ((ch
= is.read()) != -1)
{
b.append((char)
ch);
}
System.out.println("上传成功");
Toast.makeText(MainActivity.this, "上传成功",
Toast.LENGTH_LONG)
.show();
ds.close();
} catch (Exception
e)
{
System.out.println("上传失败" +
e.getMessage());
Toast.makeText(MainActivity.this, "上传失败" +
e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}
第二种方法使用httpmime-4.1.2.jar
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(
CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost httppost = new HttpPost(actionUrl);
MultipartEntity entity = new MultipartEntity();
FileBody fileBody = new FileBody(uploadFile);
entity.addPart("avatar", fileBody); //<input type="file" name="avatar" id="fileToUpload"/>
httppost.setEntity(entity);
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
HTTPTools.Log(EntityUtils.toString(resEntity) );
}
if (resEntity != null) {
resEntity.consumeContent();
}
httpclient.getConnectionManager().shutdown();
相关文章推荐
- android Bitmap类方法属性 详细说明,androidbitmap
- 内存回收小知识
- 安卓添加程序入口的方式 快速添加快捷方式
- android中的数据存储
- Android——复选按钮和开关按钮
- Android进阶之获取APK签名信息及MD5指纹
- Android开发路线(图)
- ListView和GridView,ViewPager滑动到顶部和底部时出现的阴影消除方法
- 【源码分析】Android系统启动流程.
- Android进阶之Toast重复显示解决方法
- Android的消息机制
- 使用FragmentTabHost 完成一个简单的底部导航栏
- 详解Android中用于线程处理的AsyncTask类的用法及源码
- Android 获取验证码倒计时
- 【Android基础】PullToRefreshListView OnItemLongClickListener长按事件
- Android应用开发的基本概念(入门)
- 可拖拽 GridView
- Android Studio 出现 Error: NDK integration is deprecated in the current plugin.
- Android代码混淆,就这么简单
- Andorid总结 - Bound Services