Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[jQuery] Upload zdjęć, problem PILNE
#1
Witam mam na stronce upload w jQuery i flashu. Pierwotnie zdjęcia zapisywały się w katalogu na ale ze wzgledu na to że chce zrobić galerie żeby każdy użytkownik mógł sobie przeglądać swoje materiały postanowiłem zmienić ten uplad tak żeby zdjęcia zapisywały się w bazie danych i mam problem do bazy nic się nie zapisuje niestaty :/
tu mam skrypt do uploadu u jQuery

Kod:
$(function(){
        $('#swfupload-control').swfupload({
                upload_url: "upload-file.php",
                file_post_name: 'uploadfile',
                file_size_limit : "1024",
                file_types : "*.jpg;*.png;*.gif",
                file_types_description : "Image files",
                file_upload_limit : 20,
                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+'" >'+
                                'Plik: <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" >Oczekuję</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');
                        });

                        $(this).swfupload('startUpload');
                })
                .bind('fileQueueError', function(event, file, errorCode, message){
                        alert('Rozmiar zdjęcia '+file.name+' jest większy niż dozwolony');
                })
                .bind('fileDialogComplete', function(event, numFilesSelected, numFilesQueued){
                        $('#queuestatus').text('Wybranych zdjęć: '+numFilesSelected+' / Pliki w wrzucone: '+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){
                        //pokazuje postęp
                        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="uploads/'+file.name+'" target="_blank" rel="nofollow" >Zobacz ?</a>';
                        item.addClass('success').find('p.status').html('Gotowe!!! | '+pathtofile);
                })
                .bind('uploadComplete', function(event, file){
                        //upload zakończony
                        $(this).swfupload('startUpload');
                })

});


natomiast tutaj jest kod funkcji z pliku ulpad-file.php
Kod PHP:
<?php
 
require_once('funkcje_all.php');
$lacz lacz_bd();
 
$fhandle fopen($_FILES['zdjecie']['tmp_name'], "r");
        
$content base64_encode(fread($fhandle$_FILES['zdjecie']['size']));
        
fclose($fhandle);
        
$zapytanie $lacz->query("INSERT INTO zdjecia VALUES '".$content."'");
 
?>
Odpowiedz
#2
Poczytaj to: http://www.hockinson.com/index.php?s=37 dlaczego wrzucanie plików do bazy to głupi pomysł.

Teraz tak, poczytaj jak powinno się poprawnie uploadować pliki, a potem dlaczego musisz plik mieć najpierw na serwerze (bo w tym konkretnym przypadku, Ty chcesz go w locie do bazy zapisać Big Grin).
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Odpowiedz
#3
Oczywiście Pedro ma rację Smile

Drogi Lampku - jak coś zmieniasz to uważaj by nie robić błędów.

Kod:
//JS
file_post_name: 'uploadfile',

Kod:
//PHP
$_FILES['uploadfile']['tmp_name']

u ciebie zmieniłeś uploadfile na zdjecie - ale ci nie wyszło Smile...
Odpowiedz
#4
Zmieniłem upload-file.php na cos takiego że zdjęcia są zapisywane na serverze na kadalogu uploads, a w bazie danych jest zapisywana do niech tylko ścieżka, ale niestety żadnej ścieżki mi nie zapisuje :/ Wygląda to tak:
Kod PHP:
<?php
//session_start();
require_once('funkcje_all.php');
$uploaddir './uploads/'
$file $uploaddir basename($_FILES['uploadfile']['name']); 
$size=$_FILES['uploadfile']['size'];
$lacz lacz_bd();
if(
$size>1048576)
{
    echo 
"error file size > 1 MB";
    
unlink($_FILES['uploadfile']['tmp_name']);
    exit;
}
if(
file_exists($file)) //sprawdzanie czy plik istnieje
   
{
           
srand(time());
          
$file 'uploads'.rand(1,100000000).$file;
   }

if (
move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) { 
  echo 
"success"
} else {
    echo 
"error ".$_FILES['uploadfile']['error']." --- ".$_FILES['uploadfile']['tmp_name']." %%% ".$file."($size)";
}
    
$wynik $lacz->query("insert into uzytkownik values 'michal', '$file'"); 

?>
Odpowiedz
#5
to jest ciekawy warunek:
Kod:
if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) {
  echo "success";
} else {
    echo "error ".$_FILES['uploadfile']['error']." --- ".$_FILES['uploadfile']['tmp_name']." %%% ".$file."($size)";
}
    $wynik = $lacz->query("insert into uzytkownik values 'michal', '$file'");

Czyli nie ważne czy udało cię zapisać plik czy nie to i tak go wrzucasz do bazy...

Kolego nie możesz trochę dłużej na tym posiedzieć? "Wyechować" konkretne zmienne, sprawdzić co ci zwraca ajax w firebugu?

Czy ten skrypt staje na exit? Czy może coś wypisuje? Użyj Firebuga.
No i przydały by się nawiasy w zapytaniu insert http://www.w3schools.com/php/php_mysql_insert.asp
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Sad HTML/CSS/JQUERY - Potrzebuje pomocy / Bezradność jokerblitzz 10 10,229 28-04-2016, 00:24
Ostatni post: mubi
  jquery? mordrag 0 2,336 29-03-2015, 17:44
Ostatni post: mordrag
  Galeria zdjęć w4wer 2 3,817 19-09-2014, 02:56
Ostatni post: Kartofelek
  aby funkcja JQuery zadzialala po okreslonym czasie Arnimarl 2 3,823 25-05-2014, 07:38
Ostatni post: Arnimarl
  Konflikt Mootools/Jquery kurde 2 3,244 31-10-2013, 01:44
Ostatni post: kornell

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl