Android 安卓使用改装post方法向服务器发送照片
大家好,首先我是android和stack overflow的新手。我需要的是从摄像头捕获图像并发送到php服务器 用于捕捉我使用的图像Android 安卓使用改装post方法向服务器发送照片,android,android-image,android-networking,Android,Android Image,Android Networking,大家好,首先我是android和stack overflow的新手。我需要的是从摄像头捕获图像并发送到php服务器 用于捕捉我使用的图像 Intent photo= new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(photo, 0); protected void onActivityResult(int requestCode, int resultCod
Intent photo= new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(photo, 0);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0 && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
imageBitmap = (Bitmap) extras.get("data");
mImageView.setImageBitmap(imageBitmap);
delete.setVisibility(View.VISIBLE);
button.setVisibility(View.INVISIBLE);
image = ConvertBitmapToString(imageBitmap);
}
}
//method to convert the selected image to base64 encoded string//////////////
public String ConvertBitmapToString(Bitmap bitmap){
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 25, byteArrayOutputStream);
String encodedImage= null;
try {
encodedImage = URLEncoder.encode(Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return encodedImage;
}
我的问题是映像在服务器中不可见
服务器连接
public interface SaveAPI {
@FormUrlEncoded
@POST("/example.php")
public void insertUser(
@Field("username") String name,
@Field("coname") String cname,
@Field("location") String location,
@Field("ddate") String date,
@Field("dracc") String daccnt,
@Field("cracc") String cccnt,
@Field("amount") String samt,
@Field("narr") String snarration,
@Field("bill") String image,
Callback<Response> callback);
}
private void insertUser() {
//Here we will handle the http request to insert user to mysql db
//Creating a RestAdapter
RestAdapter adapter = new RestAdapter.Builder()
.setEndpoint(SAVE_URL) //Setting the Root URL
.build();
SaveAPI api = adapter.create(SaveAPI.class);
api.insertUse r(
name,
sCname.getSelectedItem().toString(),
loc,
tdate,
sdamount.getSelectedItem().toString(),
scamount.getSelectedItem().toString(),
amt.getText().toString(),
narration.getText().toString(),
image,
new Callback<Response>() {
@Override
public void success(Response result, Response response) {
//On success we will read the server's output using
bufferedreader
//Creating a bufferedreader object
BufferedReader reader = null;
//An string to store output from the server
String output = "";
try {
//Initializing buffered reader
reader = new BufferedReader(new
InputStreamReader(result.getBody().in()));
//Reading the output in the string
output = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
//Displaying the output as a toast
Toast.makeText(ExpenseActivity.this, output,
Toast.LENGTH_LONG).show();
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(ExpenseActivity.this, error.toString(),
Toast.LENGTH_LONG).show();
}
}
);
}
公共接口SaveAPI{
@FormUrlEncoded
@POST(“/example.php”)
公共空隙插入器(
@字段(“用户名”)字符串名称,
@字段(“coname”)字符串cname,
@字段(“位置”)字符串位置,
@字段(“ddate”)字符串日期,
@字段(“dracc”)字符串daccnt,
@字段(“CRAC”)字符串cccnt,
@字段(“金额”)字符串samt,
@字段(“narr”)字符串排列,
@字段(“票据”)字符串图像,
回调(回调);
}
私有void insertUser(){
//这里我们将处理将用户插入mysql数据库的http请求
//创建重新适应程序
RestAdapter adapter=new RestAdapter.Builder()
.setEndpoint(SAVE_URL)//设置根URL
.build();
SaveAPI=adapter.create(SaveAPI.class);
api.insertUse r(
名称
sCname.getSelectedItem().toString(),
loc,
tdate,
sdamount.getSelectedItem().toString(),
scamount.getSelectedItem().toString(),
amt.getText().toString(),
description.getText().toString(),
形象,,
新回调函数(){
@凌驾
public void成功(响应结果、响应){
//成功后,我们将使用
缓冲读取器
//创建bufferedreader对象
BufferedReader reader=null;
//用于存储服务器输出的字符串
字符串输出=”;
试一试{
//初始化缓冲读取器
读卡器=新的BufferedReader(新的
InputStreamReader(result.getBody().in());
//读取字符串中的输出
输出=reader.readLine();
}捕获(IOE异常){
e、 printStackTrace();
}
//将输出显示为toast
Toast.makeText(ExpenseActivity.this,输出,
Toast.LENGTH_LONG).show();
}
@凌驾
公共无效失败(错误){
Toast.makeText(ExpenseActivity.this,error.toString(),
Toast.LENGTH_LONG).show();
}
}
);
}
事实上,我正在向服务器发送9个数据,除了服务器上显示的所有图像,任何人都可以提供问题的解决方案。提前感谢首先检查转换后的图像作为字符串是否返回数据,以及该响应是否是您打算通过再次将其转换为图像获得的有效响应。首先,调试应用程序,并检查图像是否转换为base64。如果转换正确并将其发送到服务器,则问题出在服务器上。请调试您的项目并告诉发生了什么。请输入服务器代码中绑定数据的部分现在我的图像对话工作正常了
public String ConvertBitmapToString(Bitmap bitmap)throws
FileNotFoundException {
BitmapFactory.Options options = null;
options = new BitmapFactory.Options();
options.inSampleSize = 3;
ByteArrayOutputStream byteArrayOutputStream = new
ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,40, byteArrayOutputStream);
byte[] byteArrayImage = byteArrayOutputStream.toByteArray();
String encodedImage =
Base64.encodeToString(byteArrayImage,Base64.DEFAULT);
return encodedImage;
}
ConvertBitmapToString返回一些数据或null?首先需要检查问题出在哪里。可能是您没有正确获取映像,映像没有正确转换,或者您对服务器的调用有错误。一旦你知道你可以自己找到解决方案或寻求帮助。是的,巴迪返回一些数据,但它没有显示……。我想我在图像对话中遇到了一个问题…如何解决这个问题你是否检查了这篇文章以进行转换:尝试这两种方法获取img uri:如果你是从gallery中提取的,显然,你可以得到它的文件路径uri.bro我在图像对话中有一个问题,但是我在所有的互联网站点上都得到了相同的图像对话代码。我大约两年前用过它,一切都正常