Drupal 7 文件上传(无hook_form)
Drupal 7 file upload (without hook_form)
这是一个让我在过去几天里难倒的难题。我在Drupal 7中使用模态表单,因此在hook_form系统之外工作,尝试上传图像。表单是通过 ajax 帖子提交的,这使我无法将文件与帖子一起提交。 我所做的是在 ajax 回调中,使用文件输入创建一个新的表单元素,然后触发提交,发布到我的模块定义的页面。
原始输入元素:
<input type="file" id="chooseImage" name"someImage" class="form-file">
JS触发提交:
$.ajax({
type:'POST',
url:$('#originalForm').attr('action'),
data: data,
success: function(response) {
if (response.success) {
$('<form id="imageForm" method="POST" action="upload/image/'+response.data.nid+'"></form>').appendTo($('#imageSubmit'));
$('#chooseImage').appendTo($('#imageForm'));
console.log($('#imageForm'));
$('#imageForm').submit(function(e){
console.log(e);
alert('freeze! hammertime...');
});
//This should post the file but it isn't...
$('#imageForm').trigger('submit');
}
},
dataType:'json'
});
提交事件可以很好地显示文件属性。但是,在后端,我的页面回调结束的地方...
function myModule_image_upload($param){
error_log('number of files = '.sizeof($_FILES));
}
我没有显示任何发布的文件。我猜浏览器在 .submit() 运行后正在删除帖子中的文件数据,如果是这种情况,我可能对此无能为力,所以我必须在钩子系统中实现一个单独的菜单用于图像上传。
此外,无论这到底在做什么,它似乎都会永久破坏看门狗,迫使我重新导入一个新的转储。
试试这个:
$('<form id="imageForm" enctype="multipart/form-data" method="POST" action="upload/image/'+response.data.nid+'"></form>').appendTo($('#imageSubmit'));
所以你忘了设置编码类型。
另一个错误:
<input type="file" id="chooseImage" name"someImage" class="form-file">
应该是
<input type="file" id="chooseImage" name="someImage" class="form-file"/>
相关文章:
- Dojo:访问dijit.form.Select中单击的项目
- Javascript form innerHTML
- 无法在有条件呈现的富:面板上提交h:form
- Javascript form.submit()方法是如何工作的
- 通过jQueryAjax一起发布Array和Form数据时出现问题
- This.Form.Submit() on CakePHP
- 带有Request.Form的JScript数组
- jQuery函数无法处理Form Submit
- 使用application/x-www-form-urlencoded使用node.js在post请求中发送数组
- Javascript:获取“;FORM”;它是在.html到外部.js文件中创建的
- 如何停止向上滚动<按钮dojoType=“;dijit.form.Button”;type=“;提交”/>在
- Angular Form Wide验证(不特定于字段)
- 当在coldfusion中通过AJAX传递时,FORM提交在IE浏览器中给出空表单
- Form获胜'没有ID主联系表格无法验证
- 如何使用SpringWebFlow在JavaScript中处理form.submit()
- Form.target=window.opener.name不起作用
- 在Javascript中向Ext.form.Formpanel添加多个按钮
- Javascript innerHTML with form
- this.form.submit()无法正常使用php
- 清空$_GET和$_POST,表单使用form.submit()