public static function build_http_query_multi($params) { if (!$params) { return ''; } // Urlencode both keys and values $keys = array_keys($params); $values = array_values($params); $params = array_combine($keys, $values); // Parameters are sorted by name, using lexicographical byte value ordering. // Ref: Spec: 9.1.1 (1) uksort($params, 'strcmp'); $pairs = array(); self::$boundary = $boundary = uniqid('------------------'); $MPboundary = '--' . $boundary; $endMPboundary = $MPboundary . '--'; $multipartbody = ''; foreach ($params as $parameter => $value) { if ($value[0] == '@') { $url = ltrim($value, '@'); $content = file_get_contents($url); $filename = reset(explode('?', basename($url))); $mime = self::get_image_mime($url); $multipartbody .= $MPboundary . "\r\n"; $multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . '"; filename="' . $filename . '"' . "\r\n"; $multipartbody .= 'Content-Type: ' . $mime . "\r\n\r\n"; $multipartbody .= $content . "\r\n"; } else { $multipartbody .= $MPboundary . "\r\n"; $multipartbody .= 'content-disposition: form-data; name="' . $parameter . "\"\r\n\r\n"; $multipartbody .= $value . "\r\n"; } } $multipartbody .= $endMPboundary . "\r\n"; //微信服务器不加\r\n会提示media data is missing return $multipartbody; }