gpt4 book ai didi

android无法上传图片到服务器

转载 作者:行者123 更新时间:2023-11-30 00:49:58 26 4
gpt4 key购买 nike

我是 android 的新手。从最近几天开始,我在将图像发送到服务器时遇到了一些问题。我只是有一个表格,其中包含一些文本字段和要从库中获取的图像。除了图像上传之外,一切都运行良好。我尝试了谷歌上的大部分教程。主要问题是 logcat 没有显示任何错误。我无法跟踪什么实际上出错了。这是我做的

我使用这段代码从 galary 获取图像

 private void showFileChooser() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
filePath = data.getData();
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
schoolLogoUpload.setImageBitmap(bitmap);

} catch (IOException e) {
e.printStackTrace();
}
}
}

我写了这个函数来将选定的图像发送到服务器

public String getPath(Uri uri) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":") + 1);
cursor.close();

cursor = getContentResolver().query(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
cursor.close();

return path;
}


public void uploadMultipart() {
//getting the actual path of the image
String path = getPath(filePath);

//Uploading code
try {
String uploadId = UUID.randomUUID().toString();

//Creating a multi part request
new MultipartUploadRequest(this, uploadId, UPLOAD_URL)
.addFileToUpload(path, "image") //Adding file
.setNotificationConfig(new UploadNotificationConfig())
.setMaxRetries(2)
.startUpload(); //Starting the upload

} catch (Exception exc) {
Toast.makeText(this, exc.getMessage(), Toast.LENGTH_SHORT).show();
}
}

这是我在服务器端接收图像数据的代码

if(Input::hasFile('image')) {
$file = Input::file('image');
$destination_path = "uploads";
$extension = Input::file('image')->getClientOriginalExtension();
$file_name = str_random(20). "." . $extension;
Input::file('image')->move($destination_path, $file_name);
}else{
return \Response::json([
"error"=>["message"=>"Please select the college logo"]
], 404);

最佳答案

我假设您已将图像转换为 Base64 格式。基本上 Base64 格式将图像(或编码图像)转换为 String 格式。

* 编写一个 Asynctask 来为您将图像上传到服务器 *

下面是 Asynctask :-

private class AsyncUploadToServer extends AsyncTask<String, Void, String>
{
ProgressDialog pdUpload;

String imageData = "";

@Override
protected void onPreExecute() {
super.onPreExecute();
pdUpload = new ProgressDialog(MainActivity.this);
pdUpload.setMessage("Uploading...");
pdUpload.show();
}

@Override
protected String doInBackground(String... params)
{
imageData = params[0];
HttpClient httpclient = new DefaultHttpClient();

// URL where data to be uploaded
HttpPost httppost = new HttpPost(YOUR_URL_HERE);

try
{
// adding data
List<NameValuePair> dataToBeAdd = new ArrayList<>();
dataToBeAdd.add(new BasicNameValuePair("uploadedImage", imageData));
httppost.setEntity(new UrlEncodedFormEntity(dataToBeAdd));

// execute http post request
HttpResponse response = httpclient.execute(httppost);
Log.i("MainActivity", "Response: " + response);
}
catch (ClientProtocolException ex)
{
ex.printStackTrace();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
return "";
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
pdUpload.dismiss();
Toast.makeText(getApplicationContext(), "Image Uploaded Successfully..!!", Toast.LENGTH_SHORT).show();
}
}

希望对您有所帮助。 :-)

P.S.:- 如果您对 asynctask 不太了解,这里是链接 https://developer.android.com/reference/android/os/AsyncTask.html

关于android无法上传图片到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41221809/

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