一、添加權(quán)限
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.READ_FRAME_BUFFER"
tools:ignore="ProtectedPermissions" />
二寞肖、服務(wù)器php 程序
$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'];?
}
三漂洋、Android? java程序
private static final String CHARST ="UTF-8";
public boolean uploadFile(File file,String RequestURL,String imgname) {
String BOUNDARY =UUID.randomUUID().toString();// 邊界標(biāo)識(shí) 隨機(jī)生成
? ? String PREFIX ="--",LINE_END ="\r\n";
String CONTENT_TYPE ="multipart/form-data";// 內(nèi)容類型
? ? 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");// 請(qǐng)求方式
? ? ? ? conn.setRequestProperty("Charset",CHARST);
// 設(shè)置編碼
? ? ? ? conn.setRequestProperty("connection","keep-alive");
conn.setRequestProperty("Content-Type",CONTENT_TYPE +";boundary="
? ? ? ? ? ? ? ? +BOUNDARY);
if (file !=null) {
/** * 當(dāng)文件不為空,把文件包裝并且上傳 */
? ? ? ? ? ? OutputStream outputSteam =conn.getOutputStream();
DataOutputStream dos =new DataOutputStream(outputSteam);
StringBuffer sb =new StringBuffer();
sb.append(PREFIX);
sb.append(BOUNDARY);
sb.append(LINE_END);
/**
? ? ? ? ? ? * 這里重點(diǎn)注意: name里面的值為服務(wù)器端需要key 只有這個(gè)key 才可以得到對(duì)應(yīng)的文件
? ? ? ? ? ? */
? ? ? ? ? ? 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();
/**
? ? ? ? ? ? * 獲取響應(yīng)碼 200=成功 當(dāng)響應(yīng)成功器紧,獲取響應(yīng)的流
? ? ? ? ? ? */
? ? ? ? ? ? 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;
}
四们童、新建線程調(diào)用
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();
五、動(dòng)態(tài)獲取權(quán)限
if (Build.VERSION.SDK_INT >=23) {
int REQUEST_CODE_CONTACT =101;
String[]permissions = {
Manifest.permission.WRITE_EXTERNAL_STORAGE};
//驗(yàn)證是否許可權(quán)限
? ? for (String str :permissions) {
if (MainActivity.this.checkSelfPermission(str) !=PackageManager.PERMISSION_GRANTED) {
//申請(qǐng)權(quán)限
? ? ? ? ? ? MainActivity.this.requestPermissions(permissions,REQUEST_CODE_CONTACT);
return;
}else {
//這里就是權(quán)限打開(kāi)之后自己要操作的邏輯
? ? ? ? }
}
}