一、添加权限
tools:ignore="ProtectedPermissions" /> tools:ignore="ProtectedPermissions" /> $target_path = "./test/";//接收文件目录 $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded"; } else{ echo "There was an error uploading the file, please try again!" . $_FILES['uploadedfile']['error']; } private static final String CHARST ="UTF-8"; public boolean uploadFile(File file,String RequestURL,String imgname) { String BOUNDARY =UUID.randomUUID().toString();// 边界标识 随机生成 String PREFIX ="--",LINE_END ="\r\n"; String CONTENT_TYPE ="multipart/form-data";// 内容类型 try { URL url =new URL(RequestURL); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setReadTimeout(50000); conn.setConnectTimeout(50000); conn.setDoInput(true);// 允许输入流 conn.setDoOutput(true);// 允许输出流 conn.setUseCaches(false);// 不允许使用缓存 conn.setRequestMethod("POST");// 请求方式 conn.setRequestProperty("Charset",CHARST); // 设置编码 conn.setRequestProperty("connection","keep-alive"); conn.setRequestProperty("Content-Type",CONTENT_TYPE +";boundary=" +BOUNDARY); if (file !=null) { /** * 当文件不为空,把文件包装并且上传 */ OutputStream outputSteam =conn.getOutputStream(); DataOutputStream dos =new DataOutputStream(outputSteam); StringBuffer sb =new StringBuffer(); sb.append(PREFIX); sb.append(BOUNDARY); sb.append(LINE_END); /** * 这里重点注意: name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件 */ sb.append("Content-Disposition: form-data; name=\"uploadedfile\"; filename=\"" +imgname +".png" +"\"" +LINE_END);//file.getName() sb.append("Content-Type: application/octet-stream; charset=" +CHARST +LINE_END); sb.append(LINE_END); dos.write(sb.toString().getBytes()); InputStream is =new FileInputStream(file); byte[]bytes =new byte[1024]; int len =0; // ImageView img = (ImageView) findViewById(R.id.imageView); // Bitmap bitmap = BitmapFactory.decodeStream(is); // img.setImageBitmap(bitmap); while ((len =is.read(bytes)) != -1) { dos.write(bytes,0, len); } is.close(); dos.write(LINE_END.getBytes()); byte[]end_data = (PREFIX +BOUNDARY +PREFIX +LINE_END).getBytes(); dos.write(end_data); dos.flush(); dos.close(); /** * 获取响应码 200=成功 当响应成功,获取响应的流 */ int res =conn.getResponseCode(); Log.e("111","response code:" +res); if (res ==200) { return true; } } }catch (MalformedURLException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } return false; } new Thread() { @Override public void run() { String fileName =Environment.getExternalStorageDirectory().getAbsolutePath() +"/facepass/001.png"; File filePic =new File(fileName); // uploadFile(filePic, "http://10.100.72.152/uploadimg1.php"); // uploadFile(filePic, "http://10.100.72.152/uploadimg1.php"); uploadFile(filePic,"http://10.100.72.152/?c=preson&a=addimg","img"); } }.start(); if (Build.VERSION.SDK_INT >=23) { int REQUEST_CODE_CONTACT =101; String[]permissions = { Manifest.permission.WRITE_EXTERNAL_STORAGE}; //验证是否许可权限 for (String str :permissions) { if (MainActivity.this.checkSelfPermission(str) !=PackageManager.PERMISSION_GRANTED) { //申请权限 MainActivity.this.requestPermissions(permissions,REQUEST_CODE_CONTACT); return; }else { //这里就是权限打开之后自己要操作的逻辑 } } }二、服务器php 程序
三、Android java程序
四、新建线程调用
五、动态获取权限