Avatar billede walkie84 Nybegynder
17. december 2010 - 12:39 Der er 4 kommentarer og
1 løsning

PHP/jQuery problem med upload script

Hej Alle sammen,

Jeg sidder og roder lidt med et PHP/jQuery script jeg har fundet.
Selve scriptet fungerer fint og den uploader fint, men kun til en bestemt mappe. Jeg vil gerne have at den skal kunne uploade til en vilkårlig mappe, som bliver bestemt af en variabel i adressefeltet (f.eks. www.domæne.dk/index.php?dir=mappe_navn).

Mit problem er så at jeg ikke ved hvordan jeg kan overføre $_GET['dir'] gennem jQuery funktionen og videre til php filen (i variablen $uploaddir), som udfører selve uploaden.

Herunder kan I se scriptet:

upload.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/swfupload/swfupload.js"></script>
<script type="text/javascript" src="js/jquery.swfupload.js"></script>
<script type="text/javascript">

$(function(){
    $('#swfupload-control').swfupload({
        upload_url: "upload-file.php",
        file_post_name: 'uploadfile',
        file_size_limit : "5120",
        file_types : "*.jpg;*.png;*.gif",
        file_types_description : "Image files",
        file_upload_limit : 50,
        flash_url : "js/swfupload/swfupload.swf",
        button_image_url : 'js/swfupload/wdp_buttons_upload_114x29.png',
        button_width : 114,
        button_height : 29,
        button_placeholder : $('#button')[0],
        debug: false
    })
        .bind('fileQueued', function(event, file){
            var listitem='<li id="'+file.id+'" >'+
                'File: <em>'+file.name+'</em> ('+Math.round(file.size/1024)+' KB) <span class="progressvalue" ></span>'+
                '<div class="progressbar" ><div class="progress" ></div></div>'+
                '<p class="status" >Pending</p>'+
                '<span class="cancel" > </span>'+
                '</li>';
            $('#log').append(listitem);
            $('li#'+file.id+' .cancel').bind('click', function(){
                var swfu = $.swfupload.getInstance('#swfupload-control');
                swfu.cancelUpload(file.id);
                $('li#'+file.id).slideUp('fast');
            });
            // start the upload since it's queued
            $(this).swfupload('startUpload');
        })
        .bind('fileQueueError', function(event, file, errorCode, message){
            alert('Size of the file '+file.name+' is greater than limit');
        })
        .bind('fileDialogComplete', function(event, numFilesSelected, numFilesQueued){
            $('#queuestatus').text('Files Selected: '+numFilesSelected+' / Queued Files: '+numFilesQueued);
        })
        .bind('uploadStart', function(event, file){
            $('#log li#'+file.id).find('p.status').text('Uploading...');
            $('#log li#'+file.id).find('span.progressvalue').text('0%');
            $('#log li#'+file.id).find('span.cancel').hide();
        })
        .bind('uploadProgress', function(event, file, bytesLoaded){
            //Show Progress
            var percentage=Math.round((bytesLoaded/file.size)*100);
            $('#log li#'+file.id).find('div.progress').css('width', percentage+'%');
            $('#log li#'+file.id).find('span.progressvalue').text(percentage+'%');
        })
        .bind('uploadSuccess', function(event, file, serverData){
            var item=$('#log li#'+file.id);
            item.find('div.progress').css('width', '100%');
            item.find('span.progressvalue').text('100%');
            var pathtofile='<a href="photos/'+file.name+'" target="_blank" >view »</a>';
            item.addClass('success').find('p.status').html('Done!!! | '+pathtofile);
        })
        .bind('uploadComplete', function(event, file){
            // upload has completed, try the next one in the queue
            $(this).swfupload('startUpload');
        })
   
});   

</script>

</head>
<body>

    <h3>» Billed upload</h3>
   
<div id="swfupload-control">
    <input type="button" id="button" /><FORM><INPUT type="button" onClick="window.close(); opener.refreshme();" value="Close"></FORM>
    <p id="queuestatus" ></p>
    <ol id="log"></ol>
</div>

</body>
</html>



--------------------

upload-file.php

<?php
$uploaddir = './photos/';
$file = $uploaddir . basename($_FILES['uploadfile']['name']);
$size=$_FILES['uploadfile']['size'];
if($size>5242880)
{
    echo "error file size > 5 MB";
    unlink($_FILES['uploadfile']['tmp_name']);
    exit;
}
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) {
  echo "success";
} else {
    echo "error ".$_FILES['uploadfile']['error']." --- ".$_FILES['uploadfile']['tmp_name']." %%% ".$file."($size)";
}
?>


-------------------


På forhånd tak

Morten
Avatar billede inctor Nybegynder
17. december 2010 - 22:19 #1
Heysa,

Inde i din:
$('#swfupload-control').swfupload({

Prøv at tilføje følgende linie:
post_params: {"Tfolder": "<?php echo $_GET["nymappe"]; ?>"},


Husk at stien er relativ til der hvor scriptet er i brug..
Avatar billede inctor Nybegynder
17. december 2010 - 22:20 #2
- Skal dog siges at du så igennem den, kan hente variablen "Tfolder" i din upload-file.php fil :)
Avatar billede walkie84 Nybegynder
18. december 2010 - 13:56 #3
Hej Inctor,

Tak for svaret!
Jeg prøver det i morgen (søndag), da jeg desværre ikke er hjemme idag.

Vender tilbage når jeg har afprøvet det :)

Mvh
Morten
Avatar billede walkie84 Nybegynder
20. december 2010 - 13:50 #4
Hej Inctor,

Nu har jeg forsøgt med dit foreslag.

Jeg kan dog ikke få det til at virke.

Jeg har indsat det således:

$('#swfupload-control').swfupload({
        upload_url: "upload-file.php",
        post_params: {"tfolder": "<?php echo $_GET["dir"]; ?>"},
        file_post_name: 'uploadfile',
        file_size_limit : "5120",
        file_types : "*.jpg;*.png;*.gif",
...



<?php
$uploaddir = './photos/' . $tfolder;
$file = $uploaddir . basename($_FILES['uploadfile']['name']);
$size=$_FILES['uploadfile']['size'];
...
Avatar billede inctor Nybegynder
20. december 2010 - 15:47 #5
$targetFolder = $_GET["tfolder"];
$uploaddir = './photos/' . $targetFolder;

Hvis ikke det virker, så prøv:

$targetFolder = $_POST["tfolder"];
$uploaddir = './photos/' . $targetFolder;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester