php - Blueimp jQuery 文件上传,传递额外的表单数据

标签 php jquery xml forms file-upload

我需要一些帮助...我已经设法让 blueimp jQuery 文件上传对我有用,但我在这方面绝对是个新手,我对 jQuery 等知之甚少,所以请尝试把它给我尽可能清晰和简单。我会尽量具体。

好的...我想用它来实现的是人们可以上传照片,并为每张照片选择其他选项(通过下拉菜单)并添加额外的详细信息(通过< b>文本输入框)。这些额外的表单字段将在数组中与上传的文件数组一起传递。每个文件名及其相应的菜单选择和详细信息最终将与上传的照片一起存储在动态生成的XML 或文本文件中。

我知道之前在 github 上也出现过类似的问题,我也见过类似这样的解决方案 (https://github.com/blueimp/jQuery-File-Upload/wiki/How-to-submit-additional- Form-Data),但我使用的是最新版本的插件,在我的任何文件中都找不到与之等效的代码。

到目前为止我已经添加了:

<td><b>Package:</b> 
<select name="package[]"><option value="0">Basic</option><option value="1">Advanced</option><option value="2">Restoration</option></select>
</td>
<td>
<input type="text" name="notes[]">
</td>

index.html 文件中(在“删除”按钮代码之后),并将关闭表单标记移动到模板上传脚本之后以包含这些字段。我知道进展不大。

这里是index.html的大部分内容

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/themes/base/jquery-ui.css" id="theme">
<link rel="stylesheet" href="../jquery.fileupload-ui.css">
<link rel="stylesheet" href="style.css">
<h2>File Upload</h2>
<div id="fileupload">
    <form action="upload.php" method="POST" enctype="multipart/form-data">
        <div class="fileupload-buttonbar">
            <label class="fileinput-button">
            <span>Add files...</span>
            <input type="file" name="files[]" multiple>
        </label>
        <button type="submit" class="start">Start upload</button>
        <button type="reset" class="cancel">Cancel upload</button>
        <button type="button" class="delete">Delete files</button>
    </div>
//</form> originally here, moved below
<div class="fileupload-content">
    <table class="files"></table>
    <div class="fileupload-progressbar"></div>
</div>
</div>
<script id="template-upload" type="text/x-jquery-tmpl">
<tr class="template-upload{{if error}} ui-state-error{{/if}}">
    <td class="preview"></td>
    <td class="name">${name}</td>
    <td class="size">${sizef}</td>
    {{if error}}
        <td class="error" colspan="2">Error:
            {{if error === 'maxFileSize'}}File is too big
            {{else error === 'minFileSize'}}File is too small
            {{else error === 'acceptFileTypes'}}Filetype not allowed
            {{else error === 'maxNumberOfFiles'}}Max number of files exceeded
            {{else}}${error}
            {{/if}}
        </td>
    {{else}}
        <td class="progress"><div></div></td>
        <td class="start"><button>Start</button></td>
    {{/if}}
    <td class="cancel"><button>Cancel</button></td>
</tr>
</script>
<script id="template-download" type="text/x-jquery-tmpl">
<tr class="template-download{{if error}} ui-state-error{{/if}}">
    {{if error}}
        <td></td>
        <td class="name">${name}</td>
        <td class="size">${sizef}</td>
        <td class="error" colspan="2">Error:
            {{if error === 1}}File exceeds upload_max_filesize (php.ini directive)
            {{else error === 2}}File exceeds MAX_FILE_SIZE (HTML form directive)
            {{else error === 3}}File was only partially uploaded
            {{else error === 4}}No File was uploaded
            {{else error === 5}}Missing a temporary folder
            {{else error === 6}}Failed to write file to disk
            {{else error === 7}}File upload stopped by extension
            {{else error === 'maxFileSize'}}File is too big
            {{else error === 'minFileSize'}}File is too small
            {{else error === 'acceptFileTypes'}}Filetype not allowed
            {{else error === 'maxNumberOfFiles'}}Max number of files exceeded
            {{else error === 'uploadedBytes'}}Uploaded bytes exceed file size
            {{else error === 'emptyResult'}}Empty file upload result
            {{else}}${error}
            {{/if}}
        </td>
    {{else}}
        <td class="preview">
            {{if thumbnail_url}}
                <a href="${url}" target="_blank"><img src="${thumbnail_url}"></a>
            {{/if}}
        </td>
        <td class="name">
            <a href="${url}"{{if thumbnail_url}} target="_blank"{{/if}}>${name}</a>
        </td>
        <td class="size">${sizef}</td>
        <td colspan="2"></td>
    {{/if}}
    <td class="delete">
        <button data-type="${delete_type}" data-url="${delete_url}">Delete</button>
    </td>
<td><b>Package:</b> 
<select name="package[]"><option value="0">Basic</option><option value="1">Advanced</option><option value="2">Restoration</option></select>
</td>
<td>
<input type="text" name="notes[]">
</td>
</tr>
</script>
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script>
<script src="../jquery.iframe-transport.js"></script>
<script src="../jquery.fileupload.js"></script>
<script src="../jquery.fileupload-ui.js"></script>
<script src="application.js"></script>

不过,我对 upload.php 不太了解,files[] 数组在哪里解析文件名等,我不确定从哪里接收 package[] 和notes[] 数组,遍历它们,以及如何将所有这些信息放入文本/XML 文件中。

任何有一点耐心和对这个插件/这些问题有经验的人都可以引导我完成接下来的步骤吗?非常感谢您的帮助。

最佳答案

我发现此资源有助于通过上传的文件传递额外的表单数据:

https://github.com/blueimp/jQuery-File-Upload/wiki/How-to-submit-additional-Form-Data

抱歉,我没有时间写更详细的答案。

关于php - Blueimp jQuery 文件上传,传递额外的表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7459236/

相关文章:

java - 将数据从android添加到mysql数据库时出现NullPointer异常

php - 用于 Paypal 的 curl_setopt cacert.pem

javascript - 如何通过 JQuery 或 Javascript 以编程方式调用服务器单击

java - Android {Java} 中的 XML 解析

XML:只获取一个节点的部分子节点

xml - 如何使用 Apache Velocity 进行 XML 转义?

PHP 没有以用户身份加载模块

php - "token"在密码重置中起什么作用?

javascript - 从 textarea 获取文本并将其附加到隐藏的输入

javascript - 多个选择框选项的 HTML "multiple"无法识别点击以及 jquery 的委托(delegate)功能