Avatar billede dytti Novice
16. maj 2010 - 11:45 Der er 6 kommentarer og
2 løsninger

Uploader i flash og PHP hvordan

Jeg har hentet en Flashuploader her:http://www.swfupload.org/
Som skal bruges til at uploade mp3 filer til en server.

Det har jeg leget lidt med, så den nu ser sådan ud: http://www.onlinedj.dk/uploader/index.php

Nu er problemerne flg;
1. mp3 filerne skal uploades til en folder f.eks. "uploads"
2. Info om mp3 filen skal ind i en mysqlDB F.eks. "Tracks"
3. Hvordan hulen gør jeg det?

Mit første script (selve uploaddelen) som virker, er rent php.
Det har jeg en ide om, at det på en eller anden led, skal bruges igen. Ved bare ikke hvordan, eller om det er helt ude i skoven.
Men det ser sådan ud:
<?php
$uploadDir = 'upload/';

if(isset($_POST['upload']))

{

//Informationerne fra formen
$tittel = $_POST['tittel'];
$style = $_POST['style'];
$time = $_POST['time'];
$min = $_POST['min'];
$fileName = $_FILES['txtFileName']['name'];
$tmpName = $_FILES['txtFileName']['tmp_name'];
$fileSize = $_FILES['txtFileName']['size'];
$fileType = $_FILES['txtFileName']['type'];
$text = $_POST['tracktext'];
$user = $_POST['user'];
$timestamp = $_POST['timestamp']; 

$filePath = $uploadDir . $fileName;


//smid info i databasen
$query = "INSERT INTO tracks (tittel, style, time, min, name, size, type, text, user, timestamp)
VALUES ('$tittel', '$style', '$time', '$min', '$fileName', '$fileSize', '$fileType', '$text', '$user', '$timestamp')";


$result = move_uploaded_file($tmpName, $filePath);
if (!$result)
{
echo "Fejl med upload";
exit;
}

include 'config.php';
include 'opendb.php';

if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
$filePath = addslashes($filePath);
}


mysql_query($query) or die('Error, query failed : ' . mysql_error());

include 'closedb.php';

echo "<br>Filer er uploadet<br>";

}
?>
*********************************

Nu kommer så selve brugerdelen - kaldet index.php (den jeg gerne vil have til at virke.
Den henviser bla. til 2 filer "upload.php" og "thanks.php"
Jeg har en ide om, at det er en af dem der skal ændres, men ved ikke hvilken eller hvordan.

Og det er det jeg håber at kunne få lidt hjælp til :-)

Her er de 3 filer index.php - upload.php - thanks.php

Index.php:
<?php
include("../LS2/include/session.php");
?>
<!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>
<title>onlineDJ Uploader</title>

<script type="text/javascript" src="swfupload/swfupload.js"></script>
<script type="text/javascript" src="js/swfupload.swfobject.js"></script>
<script type="text/javascript" src="js/fileprogress.js"></script>
<script type="text/javascript" src="js/handlers.js"></script>
<script type="text/javascript">
        var swfu;

        window.onload = function () {
            swfu = new SWFUpload({
                // Backend settings
                upload_url: "upload.php",
                file_post_name: "resume_file",

                // Flash file settings
                file_size_limit : "100 MB",
                file_types : "*.MP3;*.mp3;*.Mp3",            // or you could use something like: "*.doc;*.wpd;*.pdf",
                file_types_description : "Alle af Typen",
                file_upload_limit : "0",
                file_queue_limit : "1",

                // Event handler settings
                swfupload_loaded_handler : swfUploadLoaded,
               
                file_dialog_start_handler: fileDialogStart,
                file_queued_handler : fileQueued,
                file_queue_error_handler : fileQueueError,
                file_dialog_complete_handler : fileDialogComplete,
               
                //upload_start_handler : uploadStart,    // I could do some client/JavaScript validation here, but I don't need to.
                upload_progress_handler : uploadProgress,
                upload_error_handler : uploadError,
                upload_success_handler : uploadSuccess,
                upload_complete_handler : uploadComplete,

                // Button Settings
                button_image_url : "XPButtonUploadText_61x22.png",
                button_placeholder_id : "spanButtonPlaceholder",
                button_width: 61,
                button_height: 22,
               
                // Flash Settings
                flash_url : "swfupload/swfupload.swf",

                custom_settings : {
                    progress_target : "fsUploadProgress",
                    upload_successful : false
                },
               
                // Debug settings
                debug: false
            });

        };
    </script>
<link href="css/default.css" rel="stylesheet" type="text/css" />
</head>
<body>


<div id="content">

   
  <h2>DJ uploader</h2>
    <form id="form1" action="thanks.php" enctype="multipart/form-data" method="post">
    <p>Uploaderen kræver Flash Player 9+ *** <a href="http://www.adobe.com/products/flashplayer/" target="_blank">Hent
      sidste nye Flash Player</a>***</p>
    <p><br />
      - &gt; Der m&aring; kun uploades filer i MP3 format.<br />
      - &gt;Der m&aring; ikke uploades andet musik, end det du selv har komponeret.<br />
      -&gt; Der m&aring; kun uploades hele musikstykker.<br />
      -&gt; V&aelig;rker der ligger under KODA aftaler, m&aring; ikke uploades.</p>
    <p><br />
      Overtr&aelig;delse vil betyde permanent udelukkelse fra onlinedj.dk</p>
    <p>&nbsp;</p>
    <div class="fieldset"> <span class="legend">Upload din Musik</span>
      <table style="vertical-align:top;">
                <tr>
                    <td><label for="tittel">Tittel:</label></td>
                    <td><input name="tittel" id="tittel" type="text" style="width: 200px" /></td>
                </tr>
                <tr>
                    <td><label for="style">Musik genre:</label></td>
                    <td><input name="style" id="style" type="text" style="width: 200px" /></td>
                </tr>
                <tr>
                    <td><label for="time">Nummer længde:</label></td>
          <td><select name="time" id="time">
              <option value="Time">Time </option>
              <option value="01">01</option>
              <option value="02">02</option>
            </select>
            -
            <select name="minut" id="minut">
              <option value="Minutter">Minutter</option>
              <option value="00">00</option>
              <option value="05">05</option>
              <option value="10">10</option>
            </select></td>
                </tr>
                <tr>
                    <td><label for="txtFileName">Find nummer:</label></td>
                    <td>
                        <div>
                            <div>
                                <input type="text" name="txtFileName" id="txtFileName" disabled="true" style="border: solid 1px; background-color: #FFFFFF;" />
                                <span id="spanButtonPlaceholder"></span>
                                (20 MB min - 100 MB max)
                            </div>
                            <div class="flash" id="fsUploadProgress">
                                <!-- This is where the file progress gets shown.  SWFUpload doesn't update the UI directly.
                                            The Handlers (in handlers.js) process the upload events and make the UI updates -->
                            </div>
                            <input type="hidden" name="hidFileID" id="hidFileID" value="" />
                            <!-- This is where the file ID is stored after SWFUpload uploads the file and gets the ID back from upload.php -->
                        </div>
                    </td>
                </tr>
                <tr>
                    <td><label for="references">Beskrivelse af nummer:</label></td>
                    <td><textarea name="references" id="references" cols="0" rows="0" style="width: 400px; height: 100px;"></textarea>
                   
  <input type="hidden" name="user" value="<?php echo $session->username; ?>">
  <input type="hidden" name="timestamp" value="<?php echo time(); ?>"></td>
                </tr>
            </table>
            <br />
            <input type="submit" value="Submit Application" id="btnSubmit" />
        </div>
    </form>
</div>
</body>
</html>

******************************

Thanks.php:
<?php

// Check for a degraded file upload, this means SWFUpload did not load and the user used the standard HTML upload
$used_degraded = false;
$resume_id = "";
if (isset($_FILES["resume_degraded"]) && is_uploaded_file($_FILES["resume_degraded"]["tmp_name"]) && $_FILES["resume_degraded"]["error"] == 0) {
    $resume_id = $_FILES["resume_degraded"]["name"];
    $used_degraded = true;
}

// Check for the file id we should have gotten from SWFUpload
if (isset($_POST["hidFileID"]) && $_POST["hidFileID"] != "" ) {
    $resume_id = $_POST["hidFileID"];
}

?>
<!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>
<title>SWFUpload Demos - Classic Form Demo</title>

<link href="css/default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="content">

    <h2>Classic Form Demo</h2>
    <?php if ($resume_id == "") { ?>
        <p>Your resume was not received.</p>
    <?php } else { ?>
       
  <table>
    <tr>
      <td>Tittel: </td>
      <td><?php echo htmlspecialchars($_POST["tittel"]); ?> </td>
    </tr>
    <tr>
      <td>Genre: </td>
      <td><?php echo htmlspecialchars($_POST["style"]); ?> </td>
    </tr>
    <tr>
      <td>nummer ID: </td>
      <td><?php echo htmlspecialchars($resume_id); ?> </td>
    </tr>
    <tr>
      <td>Beskrivelse: </td>
      <td><?php echo htmlspecialchars($_POST["references"]); ?> </td>
    </tr>
  </table>
        <?php if ($used_degraded) { ?>
        <p>You used the standard HTML form.</p>
        <?php } ?>
        <hr width="90%" />
        <p> Thank you for your submission. </p>
    <?php } ?>
    <p><a href="index.php">Submit another Application</a></p>
    <p> Thanks for trying this demo.  Your files are discarded for the purposes of this demo. </p>
</div>
</body>
</html>

*****************************

upload.php:
<?php
    // The Demos don't save files

    if (isset($_FILES["resume_file"]) && is_uploaded_file($_FILES["resume_file"]["tmp_name"]) && $_FILES["resume_file"]["error"] == 0) {
        echo rand(1000000, 9999999);    // Create a pretend file id, this might have come from a database.
    }
   
    exit(0);    // If there was an error we don't return anything and the webpage will have to deal with it.
?>
Avatar billede dytti Novice
16. maj 2010 - 11:51 #1
Tilføjelse - I dokumentationen står der dette:

The JavaScript library file (swfupload.js) must be included on the page where the user will upload files.

Once a SWFUpload object has been created access to several functions become available which allow the developer to control SWFUpload.

Example: Adding SWFUpload.js to a page

<script type="text/javascript" src="http://www.swfupload.org/swfupload.js"></script>

Det har jeg prøvet, men det hjalp ikke.

(den er på 980 linier, så jeg venter lige med at lægge den her, til der er nogen der beder om den)
Avatar billede showsource Seniormester
16. maj 2010 - 12:57 #2
swfupload.js er vel med i det script du har hentet ?
D.v.s. brug:

<script type="text/javascript" src="swfupload.js"></script>

på den side hvor upload form er.

Prøv evt. at lave en ny fil, kun med det upload som du har hentet.
og derefter tilføje det du har brug for.
Avatar billede dytti Novice
16. maj 2010 - 13:55 #3
ja den er med, og jeg har skrevet det på samme måde som dig.
Men det hjalp ikke.
Avatar billede RexReptiles Nybegynder
16. maj 2010 - 14:42 #4
jeg ved ikke om det her hjælper men det ligner at du først henter dit config efter du prøver tilføje data sql.

diverse .js filer skal angives.

du skal huske chmode mappe du vil uploade til 777

derefter burde det spille
Avatar billede dytti Novice
16. maj 2010 - 15:45 #5
Nu skal jeg lige være sikker på at vi snakker om det samme.

Du snakker om det øverste stykke php som jeg selv har skrevet?
Det jeg før har brugt, og som virkede med en almindelig php form?

Jeg snakker om de 2 der fulgte med scriptet - Altså thanks.php og upload.php

Mener du at jeg skal udskifte det, jeg selv har skrevet med det der hedder upload.php.
Og så tilføje alle js filer der skal bruges?

Som:
<script type="text/javascript" src="swfupload/swfupload.js"></script>
<script type="text/javascript" src="js/swfupload.swfobject.js"></script>
<script type="text/javascript" src="js/fileprogress.js"></script>
<script type="text/javascript" src="js/handlers.js"></script>


<?php
$uploadDir = 'upload/';

if(isset($_POST['upload']))

{

//Informationerne fra formen
$tittel = $_POST['tittel'];
$style = $_POST['style'];
$time = $_POST['time'];
$min = $_POST['min'];
$fileName = $_FILES['txtFileName']['name'];
$tmpName = $_FILES['txtFileName']['tmp_name'];

osv.  -  osv.

(Mappen der skal uploades til er chmode 777)
Avatar billede RexReptiles Nybegynder
16. maj 2010 - 16:43 #6
du skal bruge deres upload ja - og tilføje deres .js filer og så flette dit sql ind
Avatar billede dytti Novice
16. maj 2010 - 17:47 #7
Jeg er nødt til at holde pause til i morgen, men jeg tror at du er på rette vej :-)

Melder tilbage i morgen formiddag
Avatar billede dytti Novice
23. maj 2010 - 12:10 #8
Jeg lukker her.
Har fundet en bedre uploader som virker.

Nu skal jeg bare have oplysningerne over i en DB, men det er et andet spørgsmål ;-)

Beklager at det tog lidt tid med at svare.
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