开发者社区 问答 正文

uzz:如何发送文件和第二个文本字段?

我必须模拟具有以下内容的表单的发送

文件选择器

文字输入

我正在使用此代码段发送文件

                $method,
                $endpoint,
                [
                   'headers' => ['Content-Type' => 'multipart/form-data' ],
                   'multipart' => [
                      [
                           'Content-type' => 'multipart/form-data',
                           'name'     => 'file _name.tiicsti',
                           'contents' => 'hello my content',
                           'filename' => 'filename.txt',
                      ]
                   ]
                ]
            )

;

展开
收起
社区秘书 2019-12-10 10:26:59 494 分享 版权
阿里云 AI 助理回答

看起来你正在使用PHP来发送一个包含文件和文本输入的表单。你的代码片段主要处理了文件上传的部分,但没有包括文字输入字段。为了模拟一个完整的表单提交,你需要在multipart数组中同时添加文件和文本字段。下面是一个修改后的示例,展示了如何同时发送文件和文本输入:

use GuzzleHttp\Client;

$client = new Client();

$method = 'POST';
$endpoint = 'https://your-endpoint-url.com/api/submit-form'; // 替换为你的API端点

// 准备表单数据
$formData = [
    [
        'name'     => 'file_name.txt', // 这应该是接收端期望的文件字段名
        'contents' => fopen('path/to/your/local/file.txt', 'r'), // 打开本地文件
        'filename' => 'file_name.txt', // 文件名
    ],
    [
        'name' => 'text_input_field', // 文本输入字段名
        'contents' => 'Your text input value here', // 文本输入值
    ],
];

try {
    $response = $client->request($method, $endpoint, [
        'headers' => ['Content-Type' => 'multipart/form-data'],
        'multipart' => $formData,
    ]);

    // 处理响应
    $statusCode = $response->getStatusCode();
    $responseBody = (string) $response->getBody();
    echo "Status Code: {$statusCode}\n";
    echo "Response Body: {$responseBody}\n";

} catch (\GuzzleHttp\Exception\RequestException $e) {
    // 处理请求错误
    echo "Error: " . $e->getMessage() . "\n";
}

这段代码做了以下几件事: 1. 使用Guzzle HTTP客户端创建一个请求。 2. 定义了表单数据,包括文件(通过文件句柄读取)和文本输入。 3. 发送了一个POST请求到指定的$endpoint,包含了上述定义的表单数据。 4. 捕获并处理可能发生的异常。

请确保替换$endpoint、文件路径以及表单字段名以匹配你的实际需求。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: