java 拍照上传文件_Android上使用camera拍照,把获取的照片上传到远程服务器

本文介绍了如何在Java中实现文件上传,以及在Android设备上使用Camera拍照并上传到远程服务器。通过添加相关权限和使用HttpPost、MultipartEntity等工具,实现从Android客户端将照片以JPEG格式发送到PHP服务器。
摘要由CSDN通过智能技术生成

d5a2ef9ea4e88153842689aec0e9dfb7.png

b5cd89c6285efdfc6e1a4a8c9385ad2f.png

参考原文:

使用Java上传文件

在工程中添加下面的jar包:

b5154367e47f92e072759ff62dec02aa.png

参考sample,写一个简单的上传:

public static void main(String[] args) throws Exception {

// TODO Auto-generated method stub

CloseableHttpClient httpclient = HttpClients.createDefault();

try {

HttpPost httppost = new HttpPost("http://localhost:8003/savetofile.php"); // your server

FileBody bin = new FileBody(new File("my.jpg")); // image for uploading

HttpEntity reqEntity = MultipartEntityBuilder.create()

.addPart("myFile", bin)

.build();

httppost.setEntity(reqEntity);

System.out.println("executing request " + httppost.getRequestLine());

CloseableHttpResponse response = httpclient.execute(httppost);

try {

System.out.println("----------------------------------------");

System.out.println(response.getStatusLine());

HttpEntity resEntity = response.getEntity();

if (resEntity != null) {

System.out.println("Response content length: " + resEntity.getContentLength());

}

EntityUtils.consume(resEntity);

} finally {

response.close();

}

} finally {

httpclient.close();

}

}

Android上拍照

Camera的使用很简单,只需要参考开发者网站的这篇Taking Photos Simply。

调用系统camera只需要如下代码:

拍照之后,camera会返回缩略图:

如果要获得高质量的图,就需要指定照片的保存路径。在AndroidManifest.xml中添加下面的权限:

修改调用方法:

拍照之后,使用预设的图片路径解码,就可以获取高质量的图:

从Android客户端传送图片到PHP服务器

要访问Internet,在AndroidManifest.xml中添加访问权限:

使用AsyncTask来完成上传:

private class UploadTask extends AsyncTask {

protected Void doInBackground(Bitmap... bitmaps) {

if (bitmaps[0] == null)

return null;

Bitmap bitmap = bitmaps[0];

ByteArrayOutputStream stream = new ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); // convert Bitmap to ByteArrayOutputStream

InputStream in = new ByteArrayInputStream(stream.toByteArray()); // convert ByteArrayOutputStream to ByteArrayInputStream

DefaultHttpClient httpclient = new DefaultHttpClient();

try {

HttpPost httppost = new HttpPost(

"http://192.168.8.84:8003/savetofile.php"); // server

MultipartEntity reqEntity = new MultipartEntity();

reqEntity.addPart("myFile",

System.currentTimeMillis() + ".jpg", in);

httppost.setEntity(reqEntity);

Log.i(TAG, "request " + httppost.getRequestLine());

HttpResponse response = null;

try {

response = httpclient.execute(httppost);

} catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

if (response != null)

Log.i(TAG, "response " + response.getStatusLine().toString());

} finally {

}

} finally {

}

if (in != null) {

try {

in.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (stream != null) {

try {

stream.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return null;

}

@Override

protected void onPostExecute(Void result) {

// TODO Auto-generated method stub

super.onPostExecute(result);

Toast.makeText(MainActivity.this, R.string.uploaded, Toast.LENGTH_LONG).show();

}

}

代码

Git clone https://github.com/DynamsoftRD/JavaHTTPUpload.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值