用户可以通过相机在android端拍摄5-6张照片。所以,我使用了 ACTION_IMAGE_CAPTURE。在 onActivityResult 我这样做是为了收集相机拍摄的图像的位图。假设第一张照片和第二张照片如下。
if(requestCode == 1)
{
bitMap1 = (Bitmap)extras.get("data");
imageView1.setImageBitmap(bitMap1);
globalvar = 2;
}
if(requestCode == 2)
{
bitMap1 = (Bitmap)extras.get("data");
imageView2.setImageBitmap(bitMap2);
globalvar = 2;
}
要将这些图像发送到 php 服务器,我执行以下操作。
protected String doInBackground(Integer... args) {
// Building Parameters
ByteArrayOutputStream bao1 = new ByteArrayOutputStream();
bitMap1.compress(Bitmap.CompressFormat.JPEG, 90, bao1);
byte [] bytearray1 = bao1.toByteArray();
String stringba1 = Base64.encode(bytearray1);
ByteArrayOutputStream bao2 = new ByteArrayOutputStream();
bitMap2.compress(Bitmap.CompressFormat.JPEG, 90, bao2);
byte [] bytearray2 = bao2.toByteArray();
String stringba2 = Base64.encode(bytearray2);
String parameter1 = "tenant";
String parameter2 = "price";
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("person",parameter1));
params.add(new BasicNameValuePair("price",parameter2));
params.add(new BasicNameValuePair("image1",stringba1));
params.add(new BasicNameValuePair("image2",stringba2));
JSONObject json = jParser.makeHttpRequest(requiredurl, "POST", params);
Log.d("Details", json.toString());
int success = json.getInt("connected");
if (success == 1) {
//blah blah
}
}
这是makeHttpRequest() 方法:
public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) {
// Making HTTP request
try {
// check for request method
if(method == "POST"){
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
................
....................... // Here the result is extracted and made it to json object
.............................
// return JSON
return jObj; // returning the json object to the method that calls.
}
下面是php代码片段:
$name = $_POST[person];
$price = $_POST[price];
$binary1 = base64_decode($image2);
$binary2 = base64_decode($image2);
$file1 = tempnam($uploadPath, 'image2');
$fp1 = fopen($file1, 'wb');
fwrite($fp1, $binary1);
fclose($fp1);
.................
............................
但是我无法将图像存储在服务器端文件夹中。即使我在一些链接中看到说上传多张图片时 Base64 不是可取的方式。有人可以建议我如何进行吗?已经看过这个链接和许多其他链接,但由于我什至必须连同这些图像一起发送一些数据(如人名、价格),因此无法满足我的要求。非常感谢您对此的任何帮助。
注意:即使有人可以建议我如何将上面的临时文件($file1)保存在服务器文件夹中,我也会非常感激。