使用 PHP 在网络服务中上传多张图片

Uploading multiple images in webservice using PHP

我刚开始使用 PHP 用于 Android 设备的网络服务。我需要处理多张图片上传的概念。请建议。我已经实现了单一上传概念,下面给出了单一文件上传的代码。

$data = $_REQUEST;
if($data["prop_images"]){       
            $filename = md5(time()).'.jpg';
            $base=$data["prop_images"];
            $binary = base64_decode($base);         
            $pathtoupload = JPATH_ADMINISTRATOR . '/components/com_clinchproperties/galupload/';
            //header('Content-Type: bitmap; charset=utf-8');  // binary, utf-8 bytes
            $actual_image_name = time().".jpg";
            $image = $filename;
            $file = fopen($pathtoupload.$filename,  'wb');
            fwrite($file, $binary);
            fclose($file);
        }

我需要代码来同时上传 n 张图片。任何人都可以帮我吗?提前致谢。

这将帮助您检查网络服务

<form method="post" enctype="multipart/form-data" action="audioupload.php">
 <input type="file" name="file1" multiple>
 <input type="submit"  value="OK">
</form>

audio.php
 <?php  
   move_uploaded_file($_FILES["file1"]["tmp_name"],"audio/".$_FILES["file1"]["name"]);   
  $url = "audio/".$_FILES["file1"]["name"];
  ?>

同样开发者可以调用此服务n次。

您必须传递文件数组。正如您在评论中提到的,您正在以 base64 格式发送文件数据,请尝试使用以下代码 PHP.

PHP

  $data = $_REQUEST;
  if($data["prop_images"]){ 
    foreach($data["prop_images"] as $img){ //array of images. So loop for every images
        $filename = md5(time()).'.jpg';
        $base=$img;
        $binary = base64_decode($base);         
        $pathtoupload = JPATH_ADMINISTRATOR . '/components/com_clinchproperties/galupload/';
        $actual_image_name = time().".jpg";
        $image = $filename;
        $file = fopen($pathtoupload.$filename,  'wb');
        fwrite($file, $binary);
        fclose($file);
    }
  }

在android代码中,确保在POST请求时在参数名称中添加[]。 根据我上面给出的示例,该参数应该是 prop_images[]

我不是 Android 开发人员,但我可以 post 来自我们 Android 开发人员的代码。

Android

HttpClient httpClient = new DefaultHttpClient();

HttpPost postRequest = new HttpPost("http://webserver.com/path/to/webservice.php");

MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);

for (int i = 0; i < number_of_images; i++) {
    //convert your images to base64 and store in base64ImageData.
    reqEntity.addPart("prop_images[]", base64ImageData);   //adding parameter
}

//execute request.