Android 上传图片文件等
来源:互联网 发布:godaddy域名转到万网 编辑:程序博客网 时间:2024/05/17 13:38
Android中经常需要上传文件图片等,因为使用volley请求数据很简便,但遇到上传文件就麻烦那可不好,同时使用多个网络请求类库也是不太建议的,所以这里自己总结了一点关于文件长传的资料
一、首先通过url地址获得文件输出流(设置请求参数) URL url =new URL(actionUrl) HttpURLConnection con=(HttpURLConnection)url.openConnection(); DataOutputStream ds = new DataOutputStream(con.getOutputStream()); 二、获取本地要上传文件输入流 FileInputStream fStream =new FileInputStream(uploadFile); 三、将文件的输入流输出到上传输出流中 int bufferSize =1024; byte[] buffer =newbyte[bufferSize]; int length =-1; while((length = fStream.read(buffer)) !=-1){/* 将资料写入DataOutputStream中 */ ds.write(buffer, 0, length); } ds.writeBytes(end);
详细步骤如下
publicclass PhotoUpload extends Activity { private String newName ="image.jpg"; private String uploadFile ="/sdcard/image.JPG"; private String actionUrl ="http://192.168.0.71:8086/HelloWord/myForm"; private TextView mText1; private TextView mText2; private Button mButton; @Override publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.photo_upload); mText1 = (TextView) findViewById(R.id.myText2); //"文件路径:\n"+ mText1.setText(uploadFile); mText2 = (TextView) findViewById(R.id.myText3); //"上传网址:\n"+ mText2.setText(actionUrl); /* 设置mButton的onClick事件处理 */ mButton = (Button) findViewById(R.id.myButton); mButton.setOnClickListener(new View.OnClickListener() { publicvoid onClick(View v) { uploadFile(); } }); } /* 上传文件至Server的方法 */ privatevoid uploadFile() { String end ="\r\n"; String twoHyphens ="--"; 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(twoHyphens + boundary + end); ds.writeBytes("Content-Disposition: form-data; "+ "name=\"file1\";filename=\""+ newName +"\""+ end); ds.writeBytes(end); /* 取得文件的FileInputStream */ FileInputStream fStream =new FileInputStream(uploadFile); /* 设置每次写入1024bytes */ int bufferSize =1024; byte[] buffer =newbyte[bufferSize]; int length =-1; /* 从文件读取数据至缓冲区 */ while((length = fStream.read(buffer)) !=-1) { /* 将资料写入DataOutputStream中 */ ds.write(buffer, 0, length); } ds.writeBytes(end); ds.writeBytes(twoHyphens + boundary + twoHyphens + end); /* close streams */ fStream.close(); ds.flush(); /* 取得Response内容 */ InputStream is = con.getInputStream(); int ch; StringBuffer b =new StringBuffer(); while( ( ch = is.read() ) !=-1 ) { b.append( (char)ch ); } /* 将Response显示于Dialog */ showDialog("上传成功"+b.toString().trim()); /* 关闭DataOutputStream */ ds.close(); } catch(Exception e) { showDialog("上传失败"+e); } } /* 显示Dialog的method */ privatevoid showDialog(String mess) { new AlertDialog.Builder(PhotoUpload.this).setTitle("Message") .setMessage(mess) .setNegativeButton("确定",new DialogInterface.OnClickListener() { publicvoid onClick(DialogInterface dialog, int which) { } }) .show(); } }
0 0
- Android 上传图片文件等
- android上传文件到服务器(图片、文本等)
- Android 上传文件,图片
- ckeditor实现上传图片,flash等文件。
- Plupload文件,图片等上传插件
- plupload上传图片等文件到七牛云平台
- Udeitor图片、文件等上传的实现
- 图片、文件等上传与下载
- AFNetworking 文件上传Data,File图片,文件等上传(转)
- AFNetworking 文件上传Data,File图片,文件等上传
- AFNetworking 文件上传Data,File图片,文件等上传(转)
- AFNetworking 文件上传Data,File图片,文件等上传
- AFNetworking 文件上传Data,File图片,文件等上传
- AFNetworking 文件上传Data,File图片,文件等上传
- AFNetworking 文件上传Data,File图片,文件等上传
- Android图片文件上传实例
- Android Retrofit 上传文件图片
- Android okhttp上传图片文件
- 连接查询,视图
- android客户端和java服务端之间用socket来传输图片
- RDF 格式之间的转换
- Linux命令行小技巧1
- Python中的字符串索引基本知识
- Android 上传图片文件等
- 几个不错的Android开源音视频播放器
- Android 解析带反斜杠的json数据
- C++按行读/写txt文件
- openssl动态库生成以及交叉编译
- android photoview 图片放大缩放功能 ImageView
- 排序算法
- ping-pong操作
- Android集成阿里云消息推送的方法步骤