我试图将图片文件从我的Android应用上传到服务器。这是我的php文件,它处理来自我的网站和iOS应用程序的传入图像,用于move_uploaded_file
功能:
<?php include '../../../init.php';
$post_id = $_GET['post_id'];
$image_temp = $_FILES['image']['tmp_name'];
$image_name = $_FILES['image']['name'];
$image_ext = strtolower(end(explode('.', $image_name)));
upload_page_image($image_temp, $image_ext, $post_id);
现在,在android中我遇到了Base64编码字符串:
params.put("image",imageToString(bitmap));
然后,我把它带到我的PHP文件中:
<$php
....
$image = base64_decode(_POST['image']);
...
但现在,如何将其制成$_FILES['image']['temp_name']
和$_FILES['image']['name']
?我经历的所有其他示例都使用file_put_contents
。我需要它move_uploaded_files
。
感谢任何帮助。 感谢
答案 0 :(得分:0)
您必须使用多部分表单数据提交图片才能在php中使用 move_uploaded_files
答案 1 :(得分:0)
好的,这是我经历过的最困难的事情。问题是,当我使用php函数file_put_contents()
时,它首先在android应用程序端使一切变得简单,只需将位图转换为Base64并将其传递给php文件。但是...... 在这个过程中丢失了一件非常重要的事情 ....使用$exif['Orientation']
时exif_read_data
就是ExifInterface exifReader = new ExifInterface(mFilePath);
exifReader.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1);
。此参数不再存在。
现在,当回到Android应用程序并尝试在将文件发送到php之前获取图像方向时,标准函数如下:
InputStream is = getActivity().getContentResolver().openInputStream(originalUri);
int orientation = new ImageHeaderParser(is).getOrientation();
..或类似的不起作用。它总是返回0.总是
解决方案来自使用Glide https://github.com/bumptech/glide库并使用以下方式获取当前图像方向:
dependencies {
compile project(':cropper')
compile 'com.google.android.gms:play-services:+' <-- choose either one
compile files('libs/StartAppInApp-2.4.7.jar')
compile files('libs/google-play-services.jar') <-- choose either one
compile 'com.android.support:multidex:1.0.1'
}
获得方向后,您将图像作为Base64和方向编号传递,然后处理上传并进行方向更改等。