使用php和ExtJs无法正常上传文件

时间:2012-05-16 13:09:42

标签: php file-upload extjs extjs4

我需要最简单的解决方案,用于从Ext应用程序上传文件。我是一个完整的php新手,所以我没有得到我收到的错误,只能猜出是什么导致了他们。在前端,我有一个简单的形式:

Ext.create('Ext.form.Panel', {
    width: 300,
    renderTo: Ext.getBody(),
    frame: false,
    title: 'File Upload Form',
    bodyPadding: '10 10 0',

    defaults: {
        anchor: '100%',
        allowBlank: false,
        msgTarget: 'side',
        labelWidth: 50
    },

    items: [{
        xtype: 'filefield',
        id: 'form-file',
        emptyText: 'Select mpp file',
        fieldLabel: 'File',
        name: 'mpp-file',
        buttonText: '',
        buttonConfig: {
            iconCls: 'upload-icon'
        }
    }],
    buttons: [{
        text: 'Upload',
        handler: function(){
            var form = this.up('form').getForm();
            if(form.isValid()){
                form.submit({
                    url: 'msp-load.php',
                    waitMsg: 'Loading data...',
                    success: function(fp, o) {
                        msg('Success', 'Data from .mpp file loaded ');
                    }
                });
            }
        }
    }]
})

msp-upload.php如下所示:

<?
if(isset($_FILES)){
    $file_tmp  = $_FILES['mpp-file']['tmp_name'];
    $file_name = $_FILES['mpp-file']['name'];
    $file_size = $_FILES['mpp-file']['size'];

    //echo ($file_tmp.", ".$file_name.", ".$file_size);

    if(is_uploaded_file($file_tmp)) {
        if(move_uploaded_file($file_tmp, "tmp/$file_name")){
            echo '{success: true}';
        } else {
            echo '{success: false}';
        }    
    }  else{
        echo '{success: false}';
    }
}
?>

点击“上传”后,我得到:

uncaught exception: Ext.JSON.decode(): You're trying to decode an invalid JSON String: <br> <b>Warning</b>: move_uploaded_file(tmp/MSP1.mpp) [<a href="function.move-uploaded-file">function.move-uploaded-file</a>]: failed to open stream: No such file or directory in <b>/Library/WebServer/Documents/examples/MSProject_import/msp-load.php</b> on line <b>10</b><br> <br> <b>Warning</b>: move_uploaded_file() [<a href="function.move-uploaded-file">function.move-uploaded-file</a>]: Unable to move '/private/var/tmp/phpJVDktB' to 'tmp/MSP1.mpp' in <b>/Library/WebServer/Documents/examples/MSProject_import/msp-load.php</b> on line <b>10</b><br> {success: false}

这是什么:'没有这样的文件......'错误来自?它无法找到上传的文件或其他内容?我的服务器用户具有管理员权限,因此与权限无关。

我正在使用内置的OSX 10.7服务器和PHP 5.3.6。 error.log中没有错误。

2 个答案:

答案 0 :(得分:3)

如上所述,有两个可能的问题。

  1. 路径错误(基本上您要上传的路径无效)
  2. 或者给出了错误的许可。 (CHMOD 777)

答案 1 :(得分:1)

你的msp-upload.php有错误信息:无法将'/ private / var / tmp / phpJVDktB'移动到'tmp / MSP1.mpp' 您必须设置具有写访问权限的完整目标路径

    if(move_uploaded_file($file_tmp, dirname(__FILE__)."/tmp/$file_name")){
        echo '{success: true}';
    } else {
        echo '{success: false}';
    }