views:

227

answers:

1

I upload my file using EXTJS and it's saved in the server the problem is that I can't get a success function or even the waitMsg is always running Here is the Code EXTJS code :

 var fp = new Ext.FormPanel({
    fileUpload: true,
    width: 500,
    frame: true,
    title: 'File Upload Form',
    bodyStyle: 'padding: 10px 10px 0 10px;',
    labelWidth: 50,
    defaults: {
        anchor: '95%',
        allowBlank: false,
        msgTarget: 'side'
    },
    items: [{
        xtype: 'fileuploadfield',
        id: 'form-file',
        emptyText: 'Selectionnez un fichier',
        fieldLabel: 'Fichier',
        name: 'photo-path',
        buttonText: 'Parcourir'
    }],
    buttons: [{
        text: 'Ajouter',
        handler: function(){
            if(fp.getForm().isValid()){
     var myUrl = 'php/file-upload.php?idOrganisme=' + idOrganisme + '&demarche=' + demarche;
     //alert(Ext.getCmp('').);
                 fp.getForm().submit({
                     url: myUrl,
                     waitMsg: 'Envoi de votre fichier...',
      success:function(fp,o){
       alert('Sucess');

      }
                 });
            }
        }
    },{
        text: 'Fermer',
        handler: function(){

        }
    }]
});

PHP code :

<?php
 include("connexion.php");

 $server = "http://localhost/wa";
 $idOrganisme = $_GET['idOrganisme'];
 $demarche = $_GET['demarche'];

 $req = $bdd->query('SELECT idDemarche FROM demarche,typeDemarche WHERE
 idOrganisme=' . $idOrganisme . 
 ' AND demarche.idTypeDemarche = typeDemarche.idTypeDemarche 
 AND typeDemarche.typeDemarche="' . $demarche .'"');
 $demarcheArray = $req->fetch();
 $idDemarche = $demarcheArray['idDemarche'];

 $myPath = '../uploads/_' . $idOrganisme . '_' . $idDemarche . '/';

 $target_path = utf8_decode($myPath);
 mkdir($target_path, 0705);
 echo 'OK';
 if(isset($_FILES)){
  echo 'OK';
  $temp_file_name = utf8_decode($_FILES['photo-path']['tmp_name']);
  $original_file_name = utf8_decode($_FILES['photo-path']['name']);

  // Find file extention
  $ext = explode ('.', $original_file_name);
  $ext = $ext [count ($ext) - 1];

  // Remove the extention from the original file name
  $file_name = str_replace ($ext, '', $original_file_name);

  $new_name = $target_path . '[' . utf8_encode($file_name) . $ext;
  chmod($new_name, 705);

  if(move_uploaded_file ($temp_file_name, $new_name)) {
   if($idDemarche!=''){
    $length = strlen($new_name);
    $path = $server . substr($new_name,2,$
    $req = $bdd->prepare('INSERT INTO liens(idDemarche, lien) values(:idDemarche, :lien)');
    $req->execute(array('idDemarche' => intVal($idDemarche), 'lien' => $path));
    echo "OK";
   }
  } 
  else {
   echo "error";
  }
  echo 'message';
 }

?>
A: 

You need to return a JSON response for file uploads, in your php code use either:

echo "{success: true}";

or

echo "{success: false}";

For further reference please refer to: http://dev.sencha.com/deploy/dev/docs/source/Action.html#cls-Ext.form.Action.Submit

You can also return custom errors which will help you handle the different states you are using in your code.

Ergo Summary
It don't work, my upload form is in a window that I show when I click on a button, can this be the problem ???
taichimaro
No- provided the PHP script that handles the upload on the server side ONLY returns the JSON, that should be enough (i.e. the only thing the PHP should return is, i.e. '{success: true}'.
Ergo Summary