正在从 Android 客户端向 HTTP 服务器发送 HTTP POST multipart/form-data

Sending HTTP POST multipart/form-data from Android client to HTTP server

我正在编写一个允许用户拍照的应用程序,照片会自动发送到 HTTP 服务器以通过 HTTP 进行分类 POST multipart/form-data。为了构建和发送这些请求,我使用了 Apache 的 HTTPClient 库。我有点相信我的 Java 客户端代码可以正常工作,因为我已经使用 Imgur API 端点之一进行了测试并且图像已正确上传;因此,我认为我的服务器上的端点很可能存在错误。我将请求发送到服务器,由我编写的用于接收文件的 PHP 脚本接收,将其保存到服务器上的目录,并适当地将响应发送回客户端。当我对此进行测试时,服务器总是发回状态代码为 200 的响应,即使脚本显然无法正常工作。我曾尝试手动将响应状态代码设置为 500 以强制显示错误代码,但即使这样也行不通,这让我认为当请求到达端点时整个脚本甚至没有 运行(如果它甚至到达终点)。我希望这是服务器配置错误或脚本本身错误。但是,为了以防万一,我粘贴了 Java 代码。您可能也会在那里发现一些错误。我不擅长网络或 PHP,所以我绝对可以使用一些更有经验的眼睛。

我的服务器代码:

<?php

$path = '/home/user01/Documents/uploaded_images/';
$ext = '.jpg';

function getFileName() {
  return 'image_'.date('Y-m-d_His');
}

//Receive the data from android client

$file = $_FILES['uploadedFile'];


//process the data

$filename = $path . getFileName() . '_' . $_SERVER['REMOTE_ADDR'] . $ext;

if (!is_uploaded_file($file['tmp_name']) ||
    !copy($file['tmp_name'], $filename))
{
  $message = 'Could not save file as' . $filename;
  $error = True;
}
else {
  $message = "Image uploaded successfully!";
  $error = False;
}

//return response to the server

if ($error) {
  http_response_code(500);
}

echo json_encode(
  array(
    'status' => 'Repsonse Code :' . http_response_code(),
    'message' => $message
  ), JSON_FORCE_OBJECT);


?>

更新和解决方案:

在一些 post 评论者的帮助下进行了一些故障排除后,我首先尝试编写一个简单的 HTML 表单以在本地提交 POST 请求到 PHP 脚本,在这些请求失败后,我在代码的开头添加了 die() 函数,但仍然没有任何反应。这让我弄清楚了错误。

我遇到的问题是由错误的服务器配置引起的。它导致 PHP 不被识别为已安装的语言;因此,脚本根本没有被执行。修复配置后,脚本完全按预期工作。

非常感谢评论者的见解。