Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据添加到jQuery文件上载多输入而不使用多部分_Javascript_Php_Jquery_File Upload_Jquery File Upload - Fatal编程技术网

Javascript 将数据添加到jQuery文件上载多输入而不使用多部分

Javascript 将数据添加到jQuery文件上载多输入而不使用多部分,javascript,php,jquery,file-upload,jquery-file-upload,Javascript,Php,Jquery,File Upload,Jquery File Upload,我有一个关于用户配置文件的大表单,其中包含一些文件输入字段(3个或更多)。所有字段都有不同的名称和不同的后端验证 我使用jQuery文件上传。Multipart关闭,因为表单有许多其他字段,上传阶段不需要来自这些字段的信息。一切正常,但我无法发送标志来标识某人的属性(合并表单和发送此表单的用户) formData仅适用于multipart,在常见问题解答到jQuery文件上载中,我看不到任何答案 这段代码来自JS端 $('#fileupload').fileupload({ limitC

我有一个关于用户配置文件的大表单,其中包含一些文件输入字段(3个或更多)。所有字段都有不同的名称和不同的后端验证

我使用jQuery文件上传。Multipart关闭,因为表单有许多其他字段,上传阶段不需要来自这些字段的信息。一切正常,但我无法发送标志来标识某人的属性(合并表单和发送此表单的用户)

formData仅适用于multipart,在常见问题解答到jQuery文件上载中,我看不到任何答案

这段代码来自JS端

$('#fileupload').fileupload({
    limitConcurrentUploads: 5,
    maxNumberOfFiles: 1,
    multipart:false,
    url: 'fileApi.html',
    formData: {wav: true},
    add: function(e, data) {
                //many validation
                data.submit();
此代码来自服务器端

public function post($print_response = true) {
    if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
        return $this->delete($print_response);
    }
    //если мультипарт выключен то массива файлес нет. есть только имя файла в заголовке запроса
    $upload = isset($_FILES[$this->options['param_name']]) ?
        $_FILES[$this->options['param_name']] : null;
    // Parse the Content-Disposition header, if available:
    $file_name = $this->get_server_var('HTTP_CONTENT_DISPOSITION') ?
        rawurldecode(preg_replace(
            '/(^[^"]+")|("$)/',
            '',
            $this->get_server_var('HTTP_CONTENT_DISPOSITION')
        )) : null;
    // Parse the Content-Range header, which has the following form:
    // Content-Range: bytes 0-524287/2000000
    $content_range = $this->get_server_var('HTTP_CONTENT_RANGE') ?
        preg_split('/[^0-9]+/', $this->get_server_var('HTTP_CONTENT_RANGE')) : null;
    $size =  $content_range ? $content_range[3] : null;
    $files = array();
    if ($upload && is_array($upload['tmp_name'])) {
        // param_name is an array identifier like "files[]",
        // $_FILES is a multi-dimensional array:
        foreach ($upload['tmp_name'] as $index => $value) {
            $files[] = $this->handle_file_upload(
                $upload['tmp_name'][$index],
                $file_name ? $file_name : $upload['name'][$index],
                $size ? $size : $upload['size'][$index],
                $upload['type'][$index],
                $upload['error'][$index],
                $index,
                $content_range,
                $_REQUEST['wav'][$index]
            );
        }
    } else {
        // param_name is a single object identifier like "file",
        // $_FILES is a one-dimensional array:
        $files[] = $this->handle_file_upload(
            isset($upload['tmp_name']) ? $upload['tmp_name'] : null,
            $file_name ? $file_name : (isset($upload['name']) ? $upload['name'] : null),
            $size ? $size : (isset($upload['size']) ? $upload['size'] : $this->get_server_var('CONTENT_LENGTH')),
            isset($upload['type']) ? $upload['type'] : $this->get_server_var('CONTENT_TYPE'),
            isset($upload['error']) ? $upload['error'] : print_r($_REQUEST,true),//in this sting im debugg response
            null,
            $content_range,
            $_REQUEST['wav']
        );
    }
如何在没有多部分的情况下发送附加参数?

解决此问题 在js中

在php中

    $this->options = array(
        ...
        'param_name' => 'files',
在这个

public function post($print_response = true) {
    if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
        return $this->delete($print_response);
    }
    //если мультипарт выключен то массива файлес нет. есть только имя файла в заголовке запроса
    $upload = isset($_FILES[$this->options['param_name']]) ?
        $_FILES[$this->options['param_name']] : null;
$\u文件不是空的

public function post($print_response = true) {
    if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
        return $this->delete($print_response);
    }
    //если мультипарт выключен то массива файлес нет. есть только имя файла в заголовке запроса
    $upload = isset($_FILES[$this->options['param_name']]) ?
        $_FILES[$this->options['param_name']] : null;