从android在php服务器上上传多个图像 [英] Uploading multiple image on php server from android

查看:26
本文介绍了从android在php服务器上上传多个图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此特定服务器端 php 代码的帮助我对 php 一无所知,我必须将三张图片从 android 上传到此 php 页面.

我尝试了很多方法并进行了搜索,但没有任何教程或任何内容对我没有帮助,我的 android 代码运行正常.DNS 也已配置,但图像未显示在服务器端.请帮我写java代码.

PHP:

 0){header("HTTP/1.1 400 错误请求");回声错误:".$_FILES["file1"]["error"] ."<br/>";}否则如果 ($_FILES["file2"]["error"] > 0){header("HTTP/1.1 400 错误请求");回声错误:".$_FILES["file1"]["error"] ."<br/>";}否则如果 ($_FILES["file3"]["error"] > 0){header("HTTP/1.1 400 错误请求");回声错误:".$_FILES["file1"]["error"] ."<br/>";}别的{如果 ($_FILES["file1"]["error"] > 0){回声错误:".$_FILES["file1"]["error"] ."<br/>";}别的{回声上传:".$_FILES["file1"]["name"] ."<br/>";回声类型:".$_FILES["file1"]["type"] ."<br/>";回声大小:".($_FILES["file1"]["size"]/1024)."Kb<br/>";回声存储在:".$_FILES["file1"]["tmp_name"]."<br/>";}//$target_path = "上传/";$target_path = "elp/pendingimages/";$target_path = $target_path .基本名称($_FILES['file1']['name']);if(move_uploaded_file($_FILES['file1']['tmp_name'], $target_path)) {回声文件".基本名称($_FILES['file1']['name'])."已上传";}别的{echo "上传文件时出错,请重试!";}如果 ($_FILES["file2"]["error"] > 0){回声错误:".$_FILES["file2"]["error"] ."<br/>";}别的{回声上传:".$_FILES["file2"]["name"] ."<br/>";回声类型:".$_FILES["file2"]["type"] ."<br/>";回声大小:".($_FILES["file2"]["size"]/1024)."Kb<br/>";回声存储在:".$_FILES["file2"]["tmp_name"]."<br/>";}//$target_path = "上传/";$target_path = "elp/pendingimages/";$target_path = $target_path .基本名称($_FILES['file2']['name']);如果(move_uploaded_file($_FILES['file2']['tmp_name'],$target_path)){回声文件".基本名称($_FILES['file2']['name'])."已上传";}别的{echo "上传文件时出错,请重试!";}如果 ($_FILES["file3"]["error"] > 0){回声错误:".$_FILES["file3"]["error"] ."<br/>";}别的{回声上传:".$_FILES["file3"]["name"] ."<br/>";回声类型:".$_FILES["file3"]["type"] ."<br/>";回声大小:".($_FILES["file3"]["size"]/1024)."Kb<br/>";回声存储在:".$_FILES["file3"]["tmp_name"]."<br/>";}//$target_path = "上传/";$target_path = "elp/pendingimages/";$target_path = $target_path .基本名称($_FILES['file3']['name']);if(move_uploaded_file($_FILES['file3']['tmp_name'], $target_path)) {回声文件".基本名称($_FILES['file3']['name'])."已上传";}别的{echo "上传文件时出错,请重试!";}}?>

Java:

public class TryprojectActivity extends Activity {输入流是;int pic_count = 0;位图 bitmap=null;FileInputStream in1,in2,in3;BufferedInputStream buf;@覆盖公共无效onCreate(捆绑冰柱){super.onCreate(冰柱);setContentView(R.layout.main);尝试 {in1 = new FileInputStream("/sdcard/1.jpg");}抓住(FileNotFoundException e2){//TODO 自动生成的 catch 块e2.printStackTrace();}尝试 {in2 = new FileInputStream("/sdcard/2.jpg");} catch (FileNotFoundException e1) {//TODO 自动生成的 catch 块e1.printStackTrace();}尝试 {in3 = new FileInputStream("/sdcard/3.jpg");}抓住(FileNotFoundException e1){//TODO 自动生成的 catch 块e1.printStackTrace();}位图 bitmapOrg1 = BitmapFactory.decodeStream(in1);ByteArrayOutputStream bao1 = new ByteArrayOutputStream();bitmapOrg1.compress(Bitmap.CompressFormat.JPEG, 90, bao1);字节 [] imagearray1 = bao1.toByteArray();String ba1=Base64.encode(imagearray1);位图 bitmapOrg2 = BitmapFactory.decodeStream(in2);ByteArrayOutputStream bao2 = new ByteArrayOutputStream();bitmapOrg2.compress(Bitmap.CompressFormat.JPEG, 90, bao2);字节 [] imagearray2 = bao2.toByteArray();String ba2=Base64.encode(imagearray2);位图 bitmapOrg3 = BitmapFactory.decodeStream(in3);ByteArrayOutputStream bao3 = new ByteArrayOutputStream();bitmapOrg3.compress(Bitmap.CompressFormat.JPEG, 90, bao3);字节 [] imagearray3 = bao3.toByteArray();String ba3=Base64.encode(imagearray3);列表nameValuePairs = new ArrayList(3);nameValuePairs.add(new BasicNameValuePair("image1",ba1));nameValuePairs.add(new BasicNameValuePair("image2",ba2));nameValuePairs.add(new BasicNameValuePair("image3",ba3));尝试{HttpClient httpclient = new DefaultHttpClient();HttpPost httppost = new HttpPost("http://helpdesk.cispl.com/upload_file.php");UrlEncodedFormEntity obj = new UrlEncodedFormEntity(nameValuePairs);obj.setChunked(true);httppost.setEntity(obj);HttpResponse 响应 = httpclient.execute(httppost);HttpEntity entity = response.getEntity();//is = entity.getContent();httpclient.getConnectionManager().shutdown();}捕获(异常 e){//CommonFunctions.writeLOG(ctx.getClass().toString(), e.toString());//CommonFunctions.showToast(ctx, "无法发布捕获的图像文件:" +//e.toString());}}

解决方案

看起来你的 PHP 是正确的.

在您的设备上使用带有 MultipartEntity 数据类型的 HTTP POST 请求.阅读更多此处

编辑

来自我的链接的示例:

您必须下载额外的库才能运行 MultipartEntity

1) 从 http://james.apache 下载 httpcomponents-client-4.1.zip.org/download.cgi#Apache_Mime4J 并将 apache-mime4j-0.6.1.jar 添加到您的项目中.

2) 从 http://hc.apache 下载 httpcomponents-client-4.1-bin.zip.org/downloads.cgi 并将 httpclient-4.1.jar、httpcore-4.1.jar 和 httpmime-4.1.jar 添加到您的项目中.

3) 使用下面的示例代码.

<前><代码>私有 DefaultHttpClient mHttpClient;公共服务器通信(){HttpParams params = new BasicHttpParams();params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);mHttpClient = new DefaultHttpClient(params);}public void uploadUserPhoto(File image1, File image2, File image3) {尝试 {HttpPost httppost = new HttpPost("some url");MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);multipartEntity.addPart("Title", new StringBody("Title"));multipartEntity.addPart("Nick", new StringBody("Nick"));multipartEntity.addPart("Email", new StringBody("Email"));multipartEntity.addPart("Description", new StringBody(Settings.SHARE.TEXT));multipartEntity.addPart("file1", new FileBody(image1));multipartEntity.addPart("file2", new FileBody(image2));multipartEntity.addPart("file3", new FileBody(image3));httppost.setEntity(multipartEntity);mHttpClient.execute(httppost, new PhotoUploadResponseHandler());} 捕获(异常 e){Log.e(ServerCommunication.class.getName(), e.getLocalizedMessage(), e);}}私有类 PhotoUploadResponseHandler 实现了 ResponseHandler {@覆盖公共对象 handleResponse(HttpResponse 响应)抛出 ClientProtocolException,IOException {HttpEntity r_entity = response.getEntity();String responseString = EntityUtils.toString(r_entity);Log.d("上传", responseString);返回空;}}

Help for this specific server side php code I don't have any knowledge of php and I have to upload three images from android to this php page.

I have tried many methods and searched for it but no tutorial or anything didn't help me my android code is working properly. DNS also configured but images aren't shown at the server side. Please help me with java code.

PHP:

<?php
if ($_FILES["file1"]["error"] > 0)
{
    header("HTTP/1.1 400 Bad Request");
    echo "Error: " . $_FILES["file1"]["error"] . "<br />";
}
else if ($_FILES["file2"]["error"] > 0)
{
    header("HTTP/1.1 400 Bad Request");
    echo "Error: " . $_FILES["file1"]["error"] . "<br />";
}
else if ($_FILES["file3"]["error"] > 0)
{
    header("HTTP/1.1 400 Bad Request");
    echo "Error: " . $_FILES["file1"]["error"] . "<br />";
}
else
{
    if ($_FILES["file1"]["error"] > 0)
    {
        echo "Error: " . $_FILES["file1"]["error"] . "<br />";
    }
    else
    {
        echo "Upload: " . $_FILES["file1"]["name"] . "<br />";
        echo "Type: " . $_FILES["file1"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file1"]["size"] / 1024) . " Kb<br />";
        echo "Stored in: " . $_FILES["file1"]["tmp_name"]. "<br />";
    }

    //$target_path = "uploads/";
    $target_path = "elp/pendingimages/";

    $target_path = $target_path . basename( $_FILES['file1']['name']); 

    if(move_uploaded_file($_FILES['file1']['tmp_name'], $target_path)) {
        echo "The file ".  basename( $_FILES['file1']['name']). 
            " has been uploaded"; 
    } 
    else{
        echo "There was an error uploading the file, please try again!";
    }

    if ($_FILES["file2"]["error"] > 0)
    {
        echo "Error: " . $_FILES["file2"]["error"] . "<br />";
    }
    else
    {
        echo "Upload: " . $_FILES["file2"]["name"] . "<br />";
        echo "Type: " . $_FILES["file2"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file2"]["size"] / 1024) . " Kb<br />";
        echo "Stored in: " . $_FILES["file2"]["tmp_name"]. "<br />";
    }

    //$target_path = "uploads/";
    $target_path = "elp/pendingimages/";

    $target_path = $target_path . basename( $_FILES['file2']['name']); 

    if(move_uploaded_file($_FILES['file2']['tmp_name'], $target_path)) {
        echo "The file ".  basename( $_FILES['file2']['name']). 
        " has been uploaded";
    } 
    else{
        echo "There was an error uploading the file, please try again!";
    }

    if ($_FILES["file3"]["error"] > 0)
    {
        echo "Error: " . $_FILES["file3"]["error"] . "<br />";
    }
    else
    {
        echo "Upload: " . $_FILES["file3"]["name"] . "<br />";
        echo "Type: " . $_FILES["file3"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file3"]["size"] / 1024) . " Kb<br />";
        echo "Stored in: " . $_FILES["file3"]["tmp_name"]. "<br />";
    }


    //$target_path = "uploads/";
    $target_path = "elp/pendingimages/";

    $target_path = $target_path . basename( $_FILES['file3']['name']);  

    if(move_uploaded_file($_FILES['file3']['tmp_name'], $target_path)) {
        echo "The file ".  basename( $_FILES['file3']['name']). 
            " has been uploaded";
    } 
    else{
        echo "There was an error uploading the file, please try again!";
    }
}

?>

Java:

public class TryprojectActivity extends Activity {
    InputStream is;
    int pic_count = 0;
    Bitmap bitmap=null;
    FileInputStream in1,in2,in3;
    BufferedInputStream buf;

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);

        try {
            in1 = new FileInputStream("/sdcard/1.jpg");
        } 
        catch (FileNotFoundException e2) {
        // TODO Auto-generated catch block
            e2.printStackTrace();
        }

        try {
            in2 = new FileInputStream("/sdcard/2.jpg");
        } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } 

    try {
        in3 = new FileInputStream("/sdcard/3.jpg");
    } 
    catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } 

    Bitmap bitmapOrg1 = BitmapFactory.decodeStream(in1);
    ByteArrayOutputStream bao1 = new ByteArrayOutputStream();
    bitmapOrg1.compress(Bitmap.CompressFormat.JPEG, 90, bao1);
    byte [] imagearray1 = bao1.toByteArray();
    String ba1=Base64.encode(imagearray1);

    Bitmap bitmapOrg2 = BitmapFactory.decodeStream(in2);
    ByteArrayOutputStream bao2 = new ByteArrayOutputStream();
    bitmapOrg2.compress(Bitmap.CompressFormat.JPEG, 90, bao2);
    byte [] imagearray2 = bao2.toByteArray();
    String ba2=Base64.encode(imagearray2);

    Bitmap bitmapOrg3 = BitmapFactory.decodeStream(in3);
    ByteArrayOutputStream bao3 = new ByteArrayOutputStream();
    bitmapOrg3.compress(Bitmap.CompressFormat.JPEG, 90, bao3);
    byte [] imagearray3 = bao3.toByteArray();
    String ba3=Base64.encode(imagearray3);

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);

    nameValuePairs.add(new BasicNameValuePair("image1",ba1));
    nameValuePairs.add(new BasicNameValuePair("image2",ba2));
    nameValuePairs.add(new BasicNameValuePair("image3",ba3));

    try{
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://helpdesk.cispl.com/upload_file.php");
        UrlEncodedFormEntity obj = new UrlEncodedFormEntity(nameValuePairs);
        obj.setChunked(true);
        httppost.setEntity(obj);
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        //is = entity.getContent();
        httpclient.getConnectionManager().shutdown(); 
    }
    catch(Exception e){
        //CommonFunctions.writeLOG(ctx.getClass().toString(), e.toString());
        //CommonFunctions.showToast(ctx, "Unable to post captured image file: " +
        //e.toString());
    }
}

解决方案

Looks like your PHP is correct.

On your device use HTTP POST request with MultipartEntity data type. Read more here

EDIT

Example from my link:

You will have to download additional libraries to get MultipartEntity running!

1) Download httpcomponents-client-4.1.zip from http://james.apache.org/download.cgi#Apache_Mime4J and add apache-mime4j-0.6.1.jar to your project.

2) Download httpcomponents-client-4.1-bin.zip from http://hc.apache.org/downloads.cgi and add httpclient-4.1.jar, httpcore-4.1.jar and httpmime-4.1.jar to your project.

3) Use the example code below.



    private DefaultHttpClient mHttpClient;


    public ServerCommunication() {
        HttpParams params = new BasicHttpParams();
        params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
        mHttpClient = new DefaultHttpClient(params);
    }


    public void uploadUserPhoto(File image1, File image2, File image3) {

        try {

            HttpPost httppost = new HttpPost("some url");

            MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);  
            multipartEntity.addPart("Title", new StringBody("Title"));
            multipartEntity.addPart("Nick", new StringBody("Nick"));
            multipartEntity.addPart("Email", new StringBody("Email"));
            multipartEntity.addPart("Description", new StringBody(Settings.SHARE.TEXT));
            multipartEntity.addPart("file1", new FileBody(image1));
            multipartEntity.addPart("file2", new FileBody(image2));
            multipartEntity.addPart("file3", new FileBody(image3));
            httppost.setEntity(multipartEntity);

            mHttpClient.execute(httppost, new PhotoUploadResponseHandler());

        } catch (Exception e) {
            Log.e(ServerCommunication.class.getName(), e.getLocalizedMessage(), e);
        }
    }

    private class PhotoUploadResponseHandler implements ResponseHandler {

        @Override
        public Object handleResponse(HttpResponse response)
                throws ClientProtocolException, IOException {

            HttpEntity r_entity = response.getEntity();
            String responseString = EntityUtils.toString(r_entity);
            Log.d("UPLOAD", responseString);

            return null;
        }

    }



这篇关于从android在php服务器上上传多个图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆