我正在尝试上传(发布)表单数据 - 以及图像到服务器。我尝试了以下代码但无法查明错误。
Android代码:
我正在主活动中创建Product类的对象并将其发送到后台活动。我试图将数据上传到服务器的地方。
使用的步骤:
protected String doInBackground(Products... params) {
Products pd=params[0];
Bitmap bmp=pd.getImage();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Log.e("Bitmap ","height : "+bmp.getHeight()+" Width :"+bmp.getWidth());
Log.e("Size of bmp",""+bmp.getByteCount());
bmp.compress(Bitmap.CompressFormat.JPEG,100,bos);
Log.e("Size of bos",""+bos.size());
byte[] imageToByte = bos.toByteArray();
String imageData = Base64.encodeToString(imageToByte,Base64.DEFAULT);
Log.e("Base64 encoded image",imageData);
Log.e("Status","Image Parsed");
try{
String link="*****/sellPage.php";
String data = URLEncoder.encode("uploadedimage", "UTF-8") + "=" + imageData;
Log.e("Image Data",data);
URL url = new URL(link);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
Log.e("Status", "Request Sent");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while ((line = reader.readLine()) != null) {
sb.append(line);
break;
}
Log.e("Status","Response forwarded for processing");
return sb.toString();
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch(UnsupportedEncodingException e) {
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
return null;
}
PHP代码从android读取数据并写入文件
$imgsrc = base64_decode($_POST['uploadedimage']);
echo $imsrc;
$fp = fopen('myImage1.jpg', 'w');
fwrite($fp, $imgsrc);
if(fclose($fp)){ echo "Successful";}
else{ echo "Error uploading image";}
输出
正在服务器上创建文件,但文件大小仅为0字节。文件的一次或两次是几百KB,但当我试图在" img"中显示它时没有输出。标签
任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
您可以在代码中使用以下代码将图像发送到后端
mEntity = new MultipartEntity();
if (byteArray != null || bitmap != null) {
mEntity.addPart("profile_pic", new ByteArrayBody(byteArray,
"image/jpg", "" + etName.getText().toString()
+ "_profile_pic.jpg"));
对于后端,您可以将图像显示为$_FILES['profile_pic']
。您将获得图像以及与图像相关的所有详细信息。