1

Ext アプリケーションから PHP を使用してファイルをアップロードするための最も簡単なソリューションが必要です。私はまったくの 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}

「そのようなファイルはありません...」というエラーはどこから来るのですか? アップロードされたファイルが見つからないか、それとも何か?私のサーバーユーザーには管理者権限があるため、権限についてではありません。

PHP 5.3.6 で組み込みの OSX 10.7 サーバーを使用しています。error.log にエラーはありません。

4

2 に答える 2

3

上記のように、2 つの問題が考えられます。

  1. パス エラー (基本的に、アップロードに指定したパスは無効です)
  2. または、間違った許可が与えられています。(CHMOD777)
于 2012-05-16T13:28:13.870 に答える
1

msp-upload.php からエラー メッセージが表示されます : Unable to move '/private/var/tmp/phpJVDktB' to 'tmp/MSP1.mpp' You have to set full destination path with write access

    if(move_uploaded_file($file_tmp, dirname(__FILE__)."/tmp/$file_name")){
        echo '{success: true}';
    } else {
        echo '{success: false}';
    } 
于 2012-05-16T13:13:43.707 に答える