gpt4 book ai didi

Android - 将图像文件发送到服务器数据库

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:27:11 24 4
gpt4 key购买 nike

用户保存三个数据:名称注释图像。如您所见,下面的代码,我成功地编写了将名称和注释发送到服务器端的代码。但是,我不知道如何将选定的图像文件从设备发送到 serverDB。

public class AddEditWishlists extends Activity {

// Client-Server - Start //////////////////////
// Progress Dialog
private ProgressDialog pDialog;

JSONParser jsonParser = new JSONParser();
EditText inputName;
EditText inputDesc;

// url to create new product
private static String url_create_product =
"http://10.56.43.91/android_connect/create_product.php";


// JSON Node names
private static final String TAG_SUCCESS = "success";
// Client-Server - End //////////////////////


//Define Variables
private EditText inputname;
private EditText inputnote;
private Button upload;
private Bitmap yourSelectedImage;
private ImageView inputphoto;
private Button save;
private int id;
private byte[] blob=null;
byte[] image=null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_wishlist);
setUpViews();
}

private void setUpViews() {

inputname = (EditText) findViewById(R.id.inputname);
inputnote = (EditText) findViewById(R.id.inputnote);
inputphoto = (ImageView) findViewById(R.id.inputphoto);

Bundle extras = getIntent().getExtras();

if (extras != null) {
id=extras.getInt("id");
inputname.setText(extras.getString("name"));
inputnote.setText(extras.getString("note"));

image = extras.getByteArray("blob");

if (image != null) {
if (image.length > 3) {
inputphoto.setImageBitmap(BitmapFactory.decodeByteArray(image,0,image.length));
}
}

}



//Image Upload Button
upload = (Button) findViewById(R.id.upload);
upload.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, 0);
}
});

// Save the data
save = (Button) findViewById(R.id.save);

// Save하면 발생되는 이벤트
save.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

if (inputname.getText().length() != 0) {
AsyncTask<Object, Object, Object> saveContactTask = new AsyncTask<Object, Object, Object>() {
@Override
protected Object doInBackground(Object... params) {
saveContact();

// Client-Server - Start //////////////////////////////////////
String name = inputname.getText().toString();
String description = inputnote.getText().toString();


// Building Parameters
List<NameValuePair> params1 = new ArrayList<NameValuePair>();
params1.add(new BasicNameValuePair("name", name));
params1.add(new BasicNameValuePair("description", description));

// getting JSON Object
// Note that create product url accepts POST method
JSONObject json = jsonParser.makeHttpRequest(url_create_product, "POST", params1);

// check log cat fro response
Log.d("Create Response", json.toString());

// check for success tag
try {
int success = json.getInt(TAG_SUCCESS);

if (success == 1) {
// successfully created product
// closing this screen
finish();
} else {
// failed to create product
}
} catch (JSONException e) {
e.printStackTrace();
}

// Client-Server - End ////////////////////////////////////

return null;
}

@Override
protected void onPostExecute(Object result) {
finish();
}
};

saveContactTask.execute((Object[]) null);

} else {
AlertDialog.Builder alert = new AlertDialog.Builder(
AddEditWishlists.this);
alert.setTitle("Error In Save Wish List");
alert.setMessage("You need to Enter Name of the Product");
alert.setPositiveButton("OK", null);
alert.show();
}
}
});
}


// If users save data, this will act (data -> db)
private void saveContact() {

if(yourSelectedImage!=null){
ByteArrayOutputStream outStr = new ByteArrayOutputStream();
yourSelectedImage.compress(CompressFormat.JPEG, 100, outStr);
blob = outStr.toByteArray();
}

else{blob=image;}

// Change Text type to string type to save in the DB
SQLiteConnector sqlCon = new SQLiteConnector(this);

if (getIntent().getExtras() == null) {
sqlCon.insertWishlist(inputname.getText().toString(), inputnote.getText().toString(), blob);
}

else {
sqlCon.updateWishlist(id, inputname.getText().toString(), inputnote.getText().toString(),blob);
}


}

@Override
protected void onActivityResult(int requestCode, int resultCode,Intent resultdata) {
super.onActivityResult(requestCode, resultCode, resultdata);
switch (requestCode) {
case 0:
if (resultCode == RESULT_OK) {
Uri selectedImage = resultdata.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };

Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();

int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);

cursor.close();
// Convert file path into bitmap image using below line.
yourSelectedImage = BitmapFactory.decodeFile(filePath);
inputphoto.setImageBitmap(yourSelectedImage);
}

}
}

}

我如何在客户端-服务器注释之间编码以发送图像文件?..

最佳答案

您可以将选定的图像转换为 base 64 字符串,然后将该字符串传递给服务器,然后在服务器中对其进行解码,

检查这段代码将图像转换为base64,如果你有imageView那么你可以写这段代码,

imageView.buildDrawingCache();
Bitmap bm = imageView.getDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();

String encodedImage = Base64.encodeToString(b , Base64.DEFAULT);

编辑

在您的代码中,您在这一行中有字节数组,

image = extras.getByteArray("blob");

所以之后就可以直接写这行代码了,

String encodedImage = Base64.encodeToString(image , Base64.DEFAULT);

关于Android - 将图像文件发送到服务器数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16446841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com