Forms 使用Drupal\u http\u请求上传Drupal表单api文件

Forms 使用Drupal\u http\u请求上传Drupal表单api文件,forms,drupal,file-upload,Forms,Drupal,File Upload,我试图通过使用drupal_http_请求的post请求将以drupal形式上传的文件发布到另一台服务器 我不知道我在哪里犯了错误,但文件似乎没有被张贴。我该怎么办 我使用以下代码 $options = array( 'method' => 'POST', 'data' => drupal_http_build_query($data), 'timeout' => $connect_ariba_values['timeout'], 'headers' =>

我试图通过使用drupal_http_请求的post请求将以drupal形式上传的文件发布到另一台服务器

我不知道我在哪里犯了错误,但文件似乎没有被张贴。我该怎么办

我使用以下代码

 $options = array(
  'method' => 'POST',
  'data' => drupal_http_build_query($data),
  'timeout' => $connect_ariba_values['timeout'],
  'headers' => array('Content-Type' => 'multipart/form-data'),
);

$response = drupal_http_request($url, $options);
多部分/表单数据似乎不起作用。

来源:


<?php 
$boundary = md5(uniqid());
$post_data = array(
  'name' => 'Ayesh',
  'file' => '/var/www/test/test.png',
);

$options = array(
  'method' => 'POST',
  'data' => multipart_encode($boundary, $post_data),
  'timeout' => $connect_ariba_values['timeout'],
  'headers' => array('Content-Type' => "multipart/form-data; boundary=$boundary"),
);
$response = drupal_http_request($url, $options);

// Function to encode text data.
function multipart_enc_text($name, $value){
  return "Content-Disposition: form-data; name=\"$name\"\r\n\r\n$value\r\n";
}

// Function to multipart encode a file from a give path.
function multipart_enc_file($path){
  if (substr($path, 0, 1) == "@") $path = substr($path, 1);
  $filename = basename($path);
  $mimetype = "application/octet-stream";
  $data = "Content-Disposition: form-data; name=\"file\"; filename=\"$filename\"\r\n"; // "file" key.
  $data .= "Content-Transfer-Encoding: binary\r\n";
  $data .= "Content-Type: $mimetype\r\n\r\n";
  $data .= file_get_contents($path) . "\r\n";
  return $data;
}

// base function to encode a data array.
function multipart_encode($boundary, $params){
  $output = "";
  foreach ($params as $key => $value){
    $output .= "--$boundary\r\n";
    if ($key == 'file'){
      $output .= multipart_enc_file($value);
    } else $output .= multipart_enc_text ($key, $value);
  }
  $output .="--$boundary--";
  return $output;
}