2

我遇到了一个问题。我有一个通过问题提交文章的表单$.ajax(),我正在为用户提供上传文件的选项并且我不希望页面刷新,所以我将上传表单放在提交文章的主表单中。看来我不能嵌套表格..而且我还需要$_FILES数组中文件的值..

这是我的 HTML 表单:

<form action="/" id="upload-form">
    <fieldset>
        <p class="upload-result">
        <!-- result of upload goes here -->
        </p>
        <p class="upload-images">
            <label><?php _e('Upload Images','sofa'); ?></label><a href="" class="button-secondary img_add_upload"><?php _e('Upload Image','sofa'); ?></a><a href="" class="button-secondary img_add_url"><?php _e('Add Image URL','sofa'); ?></a>
        </p>
        <p class="upload-url">
            <input type="text" name="img_url" id="img_url" value="<?php _e('Enter URL of image here...','sofa'); ?>" /><a href="" class="button-secondary img_add"><?php _e('Add Image','sofa'); ?></a>
        </p>
        <p class="upload-file">
            <input type="file" id="async-upload" name="async-upload" size="47" /><a href="" class="button-secondary img_upload"><?php _e('Upload','sofa'); ?></a>
        </p>
        <ol class="upload-images-lib">
            <li></li>
        </ol><div class="clear"></div>
        <p class="upload-images-note"><?php printf(__('Click on image to view full size. To mark image as main/featured, add image then click on %s icon.','sofa'), '<img src="'.get_bloginfo('template_directory').'/img/box.png" alt="" />'); ?></p>
        <p class="upload-input">
            <label for="utitle"><?php _e('Title','sofa'); ?></label>
            <input type="text" name="utitle" id="utitle" value="" />
            <span><?php _e('Enter a good title that describes what you are publishing. Be creative!','sofa'); ?></span>
        </p>
        <p class="upload-input">
            <label for="cat"><?Php _e('Category','sofa'); ?></label>
            <?php wp_dropdown_categories('hide_empty=0'); ?>
        </p>
        <p class="upload-editor">
            <?php wp_editor( '', 'ucontent', $settings = array(
                'textarea_rows' => 8,
                'textarea_name' => 'ucontent'
            )); ?>
        </p>
        <p class="upload-input">
            <label for="utags"><?php _e('Tags','sofa'); ?></label>
            <input type="text" name="utags" id="utags" value="" />
            <span><?php _e('Enter a comme seperated list of tags that perfectly describe your post. e.g. funny, man, public','sofa'); ?></span>
        </p>
        <p class="upload-submit">
            <input type="submit" value="<?php _e('Publish','sofa'); ?>" class="gradient-link-normal" />
        </p>
    </fieldset>
</form>

问题出在这部分。

<p class="upload-file">
    <input type="file" id="async-upload" name="async-upload" size="47" /><a href="" class="button-secondary img_upload"><?php _e('Upload','sofa'); ?></a>
</p>

我想处理文件上传,当单击它时,文件上传的 PHP 表单$_FILES显然需要数组。

我不确定这是否可能。有什么解决办法吗?

4

2 回答 2

2

您需要使用 jQuery 插件来处理文件上传,并像您已经做的那样处理来自您的 from 的剩余数据。

有一些现成的插件来执行文件上传:

值 ajax 上传

jQuery 多文件上传插件

Ajax文件上传

jQuery 文件上传

您可以在 jQuery 的插件站点上找到更多信息。

于 2012-06-02T20:14:28.083 回答
1

在页面上的另一个位置拥有嵌套表单的最佳方法,并且仅在您使用“上传”按钮单击时才显示它。

上传表单(小表单)我们最初是不可见的。您可以使用弹出窗口或 jquery 代码来显示。

<div id="smallform">
    <form name="upload">
        <input type="file" name="picture">
        <input type="submit" name="upload" value="Upload">
    </form>
</div>

<div id="largeform">
<form name="details">
    <input name="detail1">
    <input name="detail2">
     <a href="#" onclick="showSmallForm()">Upload file</a>
    <input type="submit">
</form>
</div>

函数 showSmallForm() 将在单击上传时将小表单显示为较大的表单。

于 2016-02-03T18:54:20.953 回答