session upload progress bar

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
dikere
Δημοσιεύσεις: 158
Εγγραφή: 18 Ιουν 2006 23:46
Τοποθεσία: Τhessaloniki,Serres kai sta Sinnefa
Επικοινωνία:

session upload progress bar

Δημοσίευση από dikere » 26 Σεπ 2012 22:45

Καλησπερα προσπαθω να φτιαξω μια upload progress bar με την μεθοδο του session.

Eχω βαλει ολα τα απαραιτητα extensions στο php.ini καθως εχω αλλαξει και καποια χαρακτηριστικα σχετικα με το μεθεγος και την μνημη που θελω να χρησημοποιει.

Το τρεχω σε apache σε linux environment και php5.4, τα αρχεια μου τα κανει upload αλλα δεν δειχνει την προοδο του upload.

form.php

Κώδικας: Επιλογή όλων

<?php
if &#40;$_SERVER&#91;"REQUEST_METHOD"&#93; == "POST" && !empty&#40;$_FILES&#91;"userfile"&#93;&#41;&#41; &#123;

session_start&#40;&#41;;

 $target_path = "tmp/" . basename&#40;$_FILES&#91;'userfile'&#93;&#91;'name'&#93;&#41;;


move_uploaded_file&#40;$_FILES&#91;'userfile'&#93;&#91;'tmp_name'&#93;, $target_path &#41;;
chmod&#40;$target_path , 0777&#41;;


&#125;


?>
<html>
 <head>
  <title>File Upload Progress Bar</title>
  <link rel="stylesheet" type="text/css" href="style.css">
 </head>
 <body>
  <div id="bar_blank">
   <div id="bar_color"></div>
  </div>
  <div id="status"></div>

<?php //$_SERVER&#91;'REQUEST_URI'&#93; ?>

  <form action="<?= $_SERVER&#91;'REQUEST_URI'&#93; ?>" method="POST" 
   id="myForm" enctype="multipart/form-data" target="hidden_iframe">
   <input type="hidden" value="myForm"
    name="<?php echo ini_get&#40;'session.upload_progress.name'&#41;; ?>"> 
   <input type="file" name="userfile"><br>
   <input type="submit" name="upload" value="Start Upload">
  </form>

<iframe id="hidden_iframe" name="hidden_iframe" src="about&#58;blank"></iframe> 
  <script type="text/javascript" src="script.js"></script>       
 </body>
</html>


script.js

Κώδικας: Επιλογή όλων



function toggleBarVisibility&#40;&#41; &#123;
    var e = document.getElementById&#40;"bar_blank"&#41;;
    e.style.display = &#40;e.style.display == "block"&#41; ? "none" &#58; "block";
&#125;

function createRequestObject&#40;&#41; &#123;
    var http;
    if &#40;navigator.appName == "Microsoft Internet Explorer"&#41; &#123;
        http = new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;;
    &#125;
    else &#123;
        http = new XMLHttpRequest&#40;&#41;;
    &#125;
    return http;
&#125;

function sendRequest&#40;&#41; &#123;
    var http = createRequestObject&#40;&#41;;
    http.open&#40;"GET", "progress.php"&#41;;
    http.onreadystatechange = function &#40;&#41; &#123; handleResponse&#40;http&#41;; &#125;;
    http.send&#40;null&#41;;
&#125;

function handleResponse&#40;http&#41; &#123;
    var response;
    if &#40;http.readyState == 4&#41; &#123;
        response = http.responseText;
        document.getElementById&#40;"bar_color"&#41;.style.width = response + "%";
        document.getElementById&#40;"status"&#41;.innerHTML = response + "%";

        if &#40;response < 100&#41; &#123;
            setTimeout&#40;"sendRequest&#40;&#41;", 1000&#41;;
        &#125;
        else &#123;
            toggleBarVisibility&#40;&#41;;
            document.getElementById&#40;"status"&#41;.innerHTML = "Done.";
        &#125;
    &#125;
&#125;

function startUpload&#40;&#41; &#123;
    toggleBarVisibility&#40;&#41;;
    setTimeout&#40;"sendRequest&#40;&#41;", 1000&#41;;
&#125;

&#40;function &#40;&#41; &#123;
    document.getElementById&#40;"myForm"&#41;.onsubmit = startUpload;
&#125;&#41;&#40;&#41;;


progress.php

Κώδικας: Επιλογή όλων

<?php
session_start&#40;&#41;;

$key = ini_get&#40;"session.upload_progress.prefix"&#41;."myForm";



if &#40;empty&#40;$_SESSION&#91;$key&#93;&#41;&#41; &#123;
 
    $current = $_SESSION&#91;$key&#93;&#91;"bytes_processed"&#93;;
    $total = $_SESSION&#91;$key&#93;&#91;"content_length"&#93;;
 
	echo $current < $total ? ceil&#40;$current / $total * 100&#41; &#58; 100;
&#125;
else &#123; 
   echo 100;
   
&#125;


?>
και το αρχειο style.css αλλα δεν το επισημαινω γιατι δεν επιρεαζει το script γενικα.
hasta la victoria siempre

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες