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

我可以使用一些帮助……我已经成功为我做了blueimp jQuery文件上传工作,但我仍然是一个新手,我对jQuery等知之甚少所以请尽量把它给我清楚尽可能简单。 我会尽量具体。

好的…我想要实现的是人们可以上传照片,并且每张照片都可以选择其他选项(通过下拉菜单 )并添加额外的细节(通过文本输入框 )。 这些附加表单字段将与数据一起传递,以及上载的文件数组。 每个文件名及其相应的菜单选择和细节最终将与上传的照片一起存储在动态生成的XML或文本文件中

我知道之前在github上出现了类似的问题,我已经看到了这样的解决方案(https://github.com/blueimp/jQuery-File-Upload/wiki/How-to-submit-additional-Form-Data )但我使用的是最新版本的插件,无法在我的任何文件中找到相同的代码。

到目前为止,我已添加:

Package: BasicAdvancedRestoration     

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

这是index.html的大部分内容

    

File Upload

//
originally here, moved below
${name} ${sizef} {{if error}} 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}} {{else}}
{{/if}} {{if error}} ${name} ${sizef} 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}} {{else}} {{if thumbnail_url}} {{/if}} ${name} ${sizef} {{/if}} Package: BasicAdvancedRestoration

我无法理解upload.php ,其中files []数组被解析为文件名等,并且不确定在哪里接收包[]和notes []数组,迭代它们,以及如何将所有信息放入文本/ XML文件中。

任何有耐心和一些使用此插件/这些问题的人都能指导我完成下一步吗? 非常感谢你的帮助。

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

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

对不起,我没时间写更详细的答案。

要传递额外的表单数据,您可以执行类似的操作:

  $('[name=files\\[\\]]').fileupload({ //...your initialization of the file uploader here }).bind('fileuploadsubmit', function (e, data) { data.formData = { 'package': $('[name=package\\[\\]]').val(), 'notes': $('[name=notes\\[\\]]').val() }; }); 

在PHP方面,您可以在$ _POST数组中查找提交的’package’和notes’数据。

当提交的数据不是数组数据时(如提交多个值的复选框),我会避免在表单元素名称中使用“[]”。

我还需要传递一个额外的参数,并发现formData选项可用于以编程方式设置其他表单数据。

 $('#fileupload').fileupload({ formData: { param1: 'test' ,param2: "value2" ,param3: "yasseshaikh" } }); 

来源: 以编程方式添加其他表单数据

在upload.php中 – 要查找您要查找的参数,请尝试检入全局变量$ _REQUEST,$ _GET或$ _POST http://php.net/manual/en/reserved.variables.request.php

因此,例如,如果您要向upload.php发送’package []’参数,则可以使用$ _REQUEST [‘package []’]在upload.php中访问它。

希望这可以帮助。