如何从uploadfilefield获取文件内容?

时间:2013-06-28 18:46:42

标签: javascript extjs file-upload extjs4.2

我正在尝试使用 ExtJS4 uploadfilefield获取文件内容,但不知道如何?

我有uploadfilefield的代码:

{
    xtype: 'fileuploadfield',
    buttonText : 'Upload CSV',
    buttonConfig:
    {
        icon: 'images/upload.png',
        tooltip: 
        {
            text: 'some hints',
            width: 200
        }
    },
    buttonOnly: true,
    listeners: 
    {
        'change': function(fb, v)
        {
            // v returns the filename
            // HOW CAN I GET THE FILE CONTENT?
        }
    }
}    

我在想, fb 可能有内容,但是 alert(JSON.stringify(fb)) 会给我一个关于 fb的错误是一个圆形对象。

我猜测必须有其他方式/事件。此外,我想在对话框上按下打开后立即获取文件内容。我不能使用提交按钮来执行此操作。

感谢我的同伴StackOverflowers;)

附录:

我在Sencha上看这个EXAMPLE

Ext.create('Ext.form.Panel', {
    title: 'Upload a Photo',
    width: 400,
    bodyPadding: 10,
    frame: true,
    renderTo: Ext.getBody(),
    items: [{
        xtype: 'filefield',
        name: 'photo',
        fieldLabel: 'Photo',
        labelWidth: 50,
        msgTarget: 'side',
        allowBlank: false,
        anchor: '100%',
        buttonText: 'Select Photo...'
    }],

    buttons: [{
        text: 'Upload',
        handler: function() {
            var form = this.up('form').getForm();
            if(form.isValid()){
                form.submit({
                    url: 'photo-upload.php',
                    waitMsg: 'Uploading your photo...',
                    success: function(fp, o) {
                        Ext.Msg.alert('Success', 'Your photo "' + o.result.file + '" has been uploaded.');
                    }
                });
            }
        }
    }]
});

传递给'photo-upload.php'的内容是什么?这个php应该如何获取文件的内容?

2 个答案:

答案 0 :(得分:2)

在HTML5之前,在将文件内容上传到服务器并从那里处理之前,无法访问文件内容。没有先提交表单,浏览器就无法对此文件执行任何操作。

编辑

根据Neil McGuigan上面的评论,看起来HTML5 FileReader API可能会执行您需要的一些操作。我从未使用过这个,但有更多信息可供她使用:https://developer.mozilla.org/en-US/docs/Web/API/FileReader/

答案 1 :(得分:-1)

我在extjs file uploader folder找到了我的答案(为我的应用修改了一下)

$returnResponse = $_REQUEST['returnResponse'];
    sleep(1);
    if ($returnResponse != "") 
    {
        header('HTTP/1.0 '.$returnResponse.' Server status', true, $returnResponse);
        echo '{success:false, message:"File could not be uploaded to server."}}';
    } 
    else 
    {
        $file      = $_FILES['filedata-inputEl'];
        $fileName  = $file['name'];
        $fileSize  = $file['size'];
        $temp_file = $file['tmp_name'];
 // ....

    }