[JS/PHP] scripts onderbreken op voorwaarden

Pagina: 1
Acties:

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 02-09 00:01

BierPul

2 koffie graag

Topicstarter
Dit is een beetje een gemengde vraag (/13 & /14 Coktail :D)

Ik ben bezig een beeld bank te proggelen daarbij wil ik dat je niet zomaar je oude bestanden kan overschrijven (ivm plaatjes die gelinkt worden op een site)

Nu wil ik de gene die de plaatjes upload de mogelijkheid geven te kiezen om te overschrijven of niet.

Ik zou dit dan ook graag via een stuke java script oplossen mits mogelijk.

Ik zie het als volgt voor me

*Plaatje wordt geupt vanuit form
*PHP doet een query op de db of het plaatje al bestaat
of via JS een check direct op de DIR
*Plaatje niet aanwezig ga door
*plaatje wel aanwezig geen melding
*vanuit die melding ok ga door met script
*vanuit melding nee , sla script over en ga terug.

Via PHP kan ik dit wel oplossen maar ik denk dat het via JS ook zou moeten kunnen en dat lijkt me een stuk leuker met een confirm box etc (gebruiksvriendelijker)

Iemand een ID hoe ik dit het beste aan kan pakken :?

Ja man


Verwijderd

Op vrijdag 12 juli 2002 10:55 schreef LOST_GUNT het volgende:
*PHP doet een query op de db of het plaatje al bestaat
of via JS een check direct op de DIR
Ik weet niet zeker of ik je goed begrijp, maar als je wilt checken met JS of een bestand bestaat...dat kan niet. Zowel client-side als server-side heeft JS geen mogelijkheid om dat te doen.

Wat je zou kunnen doen (al vind ik dat bijzonder lelijk) is proberen het plaatje off-screen te cachen (preloaden) en te checken of dat lukt of niet.
code:
1
2
3
4
5
6
7
8
9
10
11
12
var imageCheck = new Image();
imageCheck.onerror = luktNiet;
imageCheck.onload = luktWel;
imageCheck.src = 'naam_plaatje.gif'

function luktNiet() {
    alert(this.src+' bestaat (waarschijnlijk) niet.');
}

function luktWel() {
    alert(this.src+' bestaat wel.');
}

Ik vind dit een lelijke oplossing omdat het onerror event geen garantie is dat het plaatje echt niet bestaat.

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 02-09 00:01

BierPul

2 koffie graag

Topicstarter
Dab zou ik gaan of er een plaatje met dezelfde filenaam staat gedefineerd in de db :)

Die JS optie is idd vrij ranzig :r

Mijn vraag ging dus ook meer om of ik tussentijds mn script kan stoppen en weer kan hervatten of annuleren :)

Ja man


  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 02-09 00:01

BierPul

2 koffie graag

Topicstarter
Wat natuurlijk nog heftiger zou zijn is dat mensen kunnen kiezen om het bestand te hernoemen of te overschrijven :)

Moet ik toch maar serverside gaan denk ik :)

Ja man


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 22:33

Pelle

🚴‍♂️

File wegschrijven in een temp dir, met een md5 hash van een timestamp als filename bijvoorbeeld. Vervolgens met PHP kijken of je file al bestond; zo niet, file renamen, en verplaatsen.
Zo wel, een JS'je outputten die een confirm geeft: overschrijven of niet. Als ja, dan doorsturen naar overwriteMyTempUploadedFile.php?filename=d13v4g3md5h45h (die dus de oude file verwijdert, de nieuwe hernoemt en verplaatst van de temp dir naar de uiteindelijke bestemming).
Zo niet, geef een confirm voor hernoemen of cancel. Bij hernoemen een prompt geven waar nieuwe filename in komt te staan, waarna je het hele script weer opnieuw uitvoert (ook die filename moet gechecked worden nl.).

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 02-09 00:01

BierPul

2 koffie graag

Topicstarter
AMEN :)

Ja man


  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 02-09 00:01

BierPul

2 koffie graag

Topicstarter
* BierPul is even aan het scripten geslagen en loopt vast op het JS gedeelte :(

Het checken of de file bestaat kopieren ed is geen enkel probleem maar het JS gedeelte om te hernoemen etc kom ik niet echt uit (JS is nooit echt mijn ding geweest :P)

Iemand die me ff een zetje kan geven :)

Dit is mijn code tot nu toe
PHP:
1
<?case 'upload':/*check.1: kijken of er wel een bestand is gekozen zo ja kijk of er categorien zijn gedefinieerd*/         if(empty($_FILES [ 'bestand' ] [ 'name' ]) or empty($_REQUEST['bldbnk_mask'])) {                 $show = "result";                 $message = "Er is geen bestand aangetroffen om te uploaden, of je hebt geen catageorie gekozen";         } else {/*check.1 succesvol*//*check.2 is het bestand wel een plaatje (array maken van types die mogen en checken)*/                 $mime = array("image/png","image/gif","image/pjpeg","image/jpeg");          if (in_array($_FILES[ 'bestand' ]['type'],$mime)) {/*check.2 succesvol nu plaatje uppen naar temp locatie*/                 $temp_pad = "../images/temp/{$_FILES [ 'bestand' ]['name']}";                 move_uploaded_file($_FILES [ 'bestand' ] ['tmp_name'], $temp_pad);/*check.3 checken of temp file aanmaken goed is gegaan*/          if(!file_exists($temp_pad)) {                 $show = "result";                 $message = "Het ging mis bij het aanmaken van het temp bestand";         } else {/*Check.3 succesvol nu defenieren wat het final pad moet worden*/                 $hetpad = "../images/{$_FILES [ 'bestand' ]['name']}";/*check.4 checken of het file niet al aanwezig is*/         if(!file_exists($hetpad)) {                 copy($temp_pad, $hetpad);/*en verwijder de temp*/                 unlink($temp_pad);/*check.5 nu gaan kijken of de copy ok is verlopen*/         if(file_exists($hetpad)) {/*check.5 ok nu de $cat[] omtoveren naar een bitmask en de gegevens van de file in kaart brengen*/                 $formaat = getimagesize($hetpad);                 mysql_query("INSERT into tbl_beeldbank ( bldbnk_mime, bldbnk_pad, bldbnk_width, bldbnk_height, bldbnk_mask, bldbnk_filename) values ('{$_FILES [ 'bestand' ]['type']}', '$hetpad', '$formaat[0]', '$formaat[1]', '$bldbnk_masker', '{$_FILES [ 'bestand' ]['name']}')") or die (mysql_error());                 $affected = mysql_affected_rows();/*Check.6 is de insert op de DB ok gegaan?*/          if($affected < '1') {                        unlink($hetpad);                        $show = "result";                        $message = "Sorry, de insert op de DB is niet ok gegaan";          } else {                        $show = "result";                        $width = $formaat[1];                        $height = $formaat[0];                        $message = "De upload is succesvol gelopen: <a href=\"#\" onClick='window.open(\"$hetpad\",null,\"height=$height,width=$width,status=yes,toolbar=no,menubar=no,location=no\");'>[img]\"img/icons/test.gif\"[/img]</a><a href=$PHP_SELF?aktie=galerij&amp;cat=1>klik</a>";         }         } else {                 $show = "resul";                 $message = "Het is missgegaan bij het kopieren van de file van temp naar final DIR";         }         } else {         echo("<script>alert(\"Het plaatje bestaat al\");</script>");         }         }         } else {                 $show = "result";                 $message = "Het bestand was niet van het juiste type";         }         }break?>

* BierPul is JS n00b }:O

Ja man


Verwijderd

Volgens mij bedoel je gewoon
code:
1
2
3
4
5
6
7
8
if (confirm('Overschrijven ?'))
{
overschrijven;
}
else 
{
niet doen;
}

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 02-09 00:01

BierPul

2 koffie graag

Topicstarter
Kwam door een edit |:(

Ineens opzet helemaal weg

Maar de PHP is niet echt belangerijk in dit gevaal aangezien het /13 is en ik eigenlijk gewoon een zetje wil qua JS afhandeling :)

Ja man


  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 02-09 00:01

BierPul

2 koffie graag

Topicstarter
Op vrijdag 12 juli 2002 14:35 schreef Tizzwat het volgende:
Volgens mij bedoel je gewoon
code:
1
2
3
4
5
6
7
8
if (confirm('Overschrijven ?'))
{
overschrijven;
}
else 
{
niet doen;
}
idd en dan nog hernoemen :)

inmiddels opgelost
PHP:
1
<?echo("<script>        if (confirm('Het plaatje ({$_FILES [ 'bestand' ]['name']}) bestaat al.Klik op OK om het plaatje te vervangen of op Anuleren om het te hernoemen of om gene aktie te ondernemen Ik raad u aan voor annuleren te kiezen aangezien het plaatje gelinkt kan zijn aan andere onderdelen binnen het platform')) {              location.href = 'beeldbank_controls.php?aktie=overschrijven&amp;temp_pad=$temp_pad&amp;bldbnk_makser=$bldbnk_masker';        } else {            if (confirm('Wilt u dan renamen of geen actie ondernemen?')) {                        nieuwenaam = prompt('Wat moet de naam worden?');                        location.href = 'beeldbank_controls.php?aktie=renamen&amp;temp_pad=$temp_pad&amp;bldbnl_masker=$bldbnk_masker&amp;nieuwenaam='+nieuwenaam;            } else {                location.href = 'beeldbank_controls.php?aktie=laatmaar';            }        }        </script>");?>

Ja man

Pagina: 1