使用 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.
我刚开始使用 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.