利用第三方包:httpclient,json,photoview,base64encoder;
利用base64转码得到字符串:
<pre name="code" class="java">/**
* 将文件转码为base64字符串
*
* @param file
* @return
* @throws IOException
*/
private String encodeBase64File(File file) {
FileInputStream fis = null;
byte[] buffer = null;
try {
fis = new FileInputStream(file);
buffer = new byte[(int) file.length()];
fis.read(buffer);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return new BASE64Encoder().encode(buffer);
}
利用httpclient连接服务器传送并取得返回信息:
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(URL);
NameValuePair pair1 = new BasicNameValuePair("filename", "name");
NameValuePair pair2 = new BasicNameValuePair("fileValue", encodeBase64File(file));
ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(pair1);
pairs.add(pair2);
try {
httpPost.setEntity(new UrlEncodedFormEntity(pairs));
HttpResponse httpResponse = httpClient.execute(httpPost);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
JSONObject jsonObj = new JSONObject(getResultFromHttpResponse(httpResponse));
int resultCode = jsonObj.getInt("status");
// TODO 对于回馈做出反应
Log.i("resultStatus", "resultStatus:" + resultCode);
}
利用时间生成文件名:
// 利用时间生成文件名
Calendar c = Calendar.getInstance();
String name = "" + c.get(Calendar.YEAR) + c.get(Calendar.MONTH) + c.get(Calendar.DAY_OF_MONTH)
+ c.get(Calendar.HOUR_OF_DAY) + c.get(Calendar.MINUTE) + c.get(Calendar.SECOND) + ".png";
Log.i("文件名", name);
// 保存文件
File file = new File(Environment.getExternalStorageDirectory(), name);