【发布时间】:2017-05-04 11:00:34
【问题描述】:
我是 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);
【问题讨论】:
-
你在哪里打电话
uploadMultipart()? -
您还想将
exc.printStackTrace()添加到您的方法中。 -
@mad_manny 我在按钮内调用该函数,将数据发送到服务器。你能帮帮我吗?