代码之家  ›  专栏  ›  技术社区  ›  rg88

用PHP中的jqgrid上传文件

  •  2
  • rg88  · 技术社区  · 16 年前

    我正在尝试用jqgrid实现文件上传(在Zend框架项目中)。jqgrid允许您创建“file”类型的输入字段,但不启用ENCTYPE=multipart/form data。

    创建者建议使用另一个插件来处理文件上传,特别是 Ajax File Upload . 他说用 onInitializeForm() 但具体怎么做我不清楚。他说,

    “我建议您也可以使用Ajax 文件上传插件和初始化它 仅在onInitializeForm事件中出现一次。“

    这是关于如何做这件事的说明。

    到目前为止我所做的: 我有jqgrid编辑表单显示文件输入字段,我有各种各样的插件文件就位并正确加载。我不知道的是如何让提交的表单正确上传文件(我猜我不知道如何“用onInitializeForm事件初始化ajax文件上传插件”)。任何想法都非常感谢。

    值得一提的是,我可以让onInitializeForm触发一些简单的事件,比如alert('test'),但是每次加载网格时,它的触发次数都在不断增加(比如,第一次什么都没有,下次加载网格时一个警报,下次两个警报,等等)。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Tareq    14 年前

    答案如下:

    <!-- Add your other js files like jQuery, jqGrid etc. -->
    <script type="text/javascript" src="js/ajaxfileupload.js"></script>
    <script language="javascript">
        $(function() {
            $(document).ready(function() {
                jQuery("#your_grid_id").jqGrid({
                    url: 'your_url',
                    datatype: 'json',
                    mtype: 'post',
                    pager: 'your_pager_id',
                    colNames: ["Description", "File"],
                    colModel: [{name: "desc", index: "desc", ... ... ...}, {name: "file_to_upload", index: "file_to_upload", edittype: "file", ... ... ...}]
                }).navGrid("#your_pager_id",{{... ... ...},{
                    jqModal:true,closeAfterEdit: true,recreateForm:true,onInitializeForm : function(formid){
                        $(formid).attr('method','POST');
                        $(formid).attr('action','');
                        $(formid).attr('enctype','multipart/form-data');
                    }, afterSubmit : function(response, postdata){
                           $.ajaxFileUpload({
                              url: 'your_file_url_where_upload_operates', 
                              secureuri:false,
                              fileElementId:'file_to_upload',
                              dataType: 'json',
                              success: function (data, status) {
                                  alert("Upload Complete.");
                              }
                           });
                       }
                    }},{
                    jqModal:true,closeAfterAdd: true,recreateForm:true,onInitializeForm : function(formid){
                        $(formid).attr('method','POST');
                        $(formid).attr('action','');
                        $(formid).attr('enctype','multipart/form-data');
                    }, afterSubmit : function(response, postdata){
                           $.ajaxFileUpload({
                              url: 'your_file_url_where_upload_operates', 
                              secureuri:false,
                              fileElementId:'file_to_upload',
                              dataType: 'json',
                              success: function (data, status) {
                                  alert("Upload Complete.");
                              }
                           });
                       }
                    }
                });
            });
        });
    </script>
    

    recreateForm: true 以确保在每次添加或编辑时重新创建窗体。

    如果你还有问题,请随时问我。

    推荐文章