Search code examples
phpjqueryajaxuploadifyjquery-file-upload

How to rename file in jquery file upload


Hi i'm new to jquery. i'm trying to rename the file in upload..but i'm not able to do so

The Code i'm using for file upload

 $(function() {
var btnUpload=$('#upload');

var status=$('#status');
    new AjaxUpload(btnUpload, {
action: 'upload-file.php',
name: 'uploadfile',
    onSubmit: function(finalname, ext){
if (! (ext && /^(pdf|doc|docx|xls|xlsx|text|)$/.test(ext))){ 
status.text('Only pdf, xls,doc,docs,xlsx and text files are allowed');
return false;
}
status.text('Uploading...');
},
onComplete: function(finalname, response){
status.text('');
if(response==="success"){
$('#head').val(finalname);
} else{
status.text('Upload Failed');
}
    }
});

Php Code is

$uploaddir = 'uploads/files/'; 
$file = $uploaddir . basename($_FILES['uploadfile']['name']); 
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) { 
  echo "success"; 
} else {

    echo "error";
}

Html

<div id="upload" ><span>Browse<span></div><span id="status" ></span>
<input type="text" id="head" name="head" value="">

i am able to rename with php file...but not in jquery code it gives me wrong file name kindly help


Solution

  • I managed to rename the file name before upload...pepole down voted it inspite of helping. The changed i made to my code might be usefull for someone else

     $(function() {
        var btnUpload=$('#upload');
    var status=$('#status');
    var mm=Math.random().toString(36).substring(7) + new Date().getTime(); //to add new name of file
    new AjaxUpload(btnUpload, {
    action: 'upload-file.php?name='+mm, // gave a action to php file so i can use the same name
    name: 'uploadfile',
    onSubmit: function(file, ext){
     if (! (ext && /^(pdf|doc|docx|xls|xlsx|text|)$/.test(ext))){ 
    status.text('Only pdf, xls,doc,docs,xlsx and text files are allowed');
    return false;
    }
    status.text('Uploading...');
    },
    onComplete: function(file, response){
    var fileExtension = '.' + file.split('.').pop(); //got the file extestion
    var outputfile = file.substr(0, file.lastIndexOf('.')) || file; //got the file name
    var spaceremoved=outputfile.replace(/\s/g, '');//removed the space from file
    var filename=mm+spaceremoved+fileExtension; //merged all to one
        status.text('');
    if(response==="success"){
        $('#head').val(filename);
        } else{
    }
        }
        });
    

    changes i made in php file

    $uploaddir = 'uploads/files/'; 
    if(isset($_GET['name'])){
    $filena=$_GET['name'];
    }
    $basename=$filena.basename($_FILES['uploadfile']['name']);//merged the name
    $finalna=preg_replace('/\s+/', '', $basename);//removed the space
    $file = $uploaddir .$finalna;// merged to final 
    if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) { 
      echo "success"; 
    } else {
        echo "error";
    }