Avatar billede jan-b Nybegynder
31. januar 2011 - 22:35 Der er 6 kommentarer og
1 løsning

Hvorfor duer stierne ikke

Jeg ønsker at uploade billeder til min database ved at pege på billederne via en URL-sti.

Hvis jeg gør det manuelt ved at skrive URL-en fungerer det fint

Eks.:
http://localhost/BillederTilPHP/Blomst.jpg

Problemet opstår når jeg anvender min lærebogs program
til samme formål. Jeg gengiver kun en lille del af programmet -
Jonathan Starks bog om PHP og Filemaker - for det er nok ikke
selve programmeringen der er noget galt med - det er nærmere min forståelse - eller placering af mapper?

<form action="upload_image.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="recid" value="<?php echo $recid; ?>" />
Upload image: <input type="file" name="new_image" />
<input type="submit" name="action" value="Upload" />
</form>

Denne stump af programmet fremkalder i browseren et tekstlinje samt en knap (Gennemse) og endnu en knap (Upload).
Og nu kommer problemet - for bruger jeg (Gennemse) til at pege på
selvsamme billede får jeg denne sti i tekstfeltet:

/Library/Webserver/Documents/BillederTilPHP/Blomst.jpg

Og den sti er jo sådan set også OK; men den accepteres ikke af resten af programmet.

Har nogen et forslag?

------------------------------------
Info om Hard-/Software
------------------------------------
Computer: Mac OS X 10.5.8 med Apache
Database: FileMaker Pro 9.0v3
Server: FileMaker Server 11
Teksteditor: TextMate 1.5.10
Avatar billede HBP2 Praktikant
31. januar 2011 - 22:51 #1
Når du klikker på "Upload" knapper bliver indholder af <form> sendte over til webserveren. Indholdet i formen er billed-filen plus filnavnet/stien. Scriptet på webserveren bør ikke bruge filnavnet til noget (andet end til reference), for hvis webserveren er en fjern computer så duer filnavnet jo ikke til noget - det er kun gyldigt på din lokale computer.

I PHP er informationen om uploadede filer tilgængelig i $_FILES, se:
http://www.php.net/manual/en/features.file-upload.multiple.php
Avatar billede jan-b Nybegynder
31. januar 2011 - 23:12 #2
Jamen det er som om der er 2 stier til samme billede - og jeg har ikke helt fat i forskellen

Manuelt duer:

<!--http://localhost//BillederTilPHP/Blomst.jpg-->

mens Upload genererer:

<!--/Library/Webserver/Documents/BillederTilPHP/Blomst.jpg-->
Avatar billede HBP2 Praktikant
31. januar 2011 - 23:21 #3
Igen, det er lidt ligemeget hvad Upload genererer - du skal ikke bruge det filnavn til noget.
Avatar billede Slettet bruger
31. januar 2011 - 23:29 #4
har du prøvet at søge på google omkring det??
Avatar billede repox Seniormester
01. februar 2011 - 08:03 #5
Jeg kunne godt tænke mig at vide hvad du mener med at 'programmet ikke godtager din sti'?
Og så vil jeg meget gerne se indholdet af upload_image.php
Avatar billede jan-b Nybegynder
02. februar 2011 - 00:45 #6
Jeg kan godt se, at jeg ikke har forklaret præcist hvad jeg er ude på. Jeg er ude på at kunne uploade billeder til databasen via URL-stier. Bileder fra min egen OG fra "fremmede" computere på nettet.

Her er koden på upload_image.php - som melder fejl når jeg har peget på et billede på min egen computer.


<?php
define('FM_HOST', '192.168.10.108');
define('FM_FILE', 'Product Catalog');
define('FM_USER', 'Adam');
define('FM_PASS', '524008M');
require_once ('FileMaker.php');
$fm = new FileMaker(FM_FILE, FM_HOST, FM_USER, FM_PASS);
if (empty($_REQUEST['recid'])) {
die('The record id is missing.');
}
if (isset($_POST['action']) and $_POST['action'] == 'Upload') {
$image_directory = 'Images/';
$temporary_file = $_FILES['new_image']['tmp_name'];
$dest_file = $image_directory . $_FILES['new_image']['name'];
$result = move_uploaded_file($temporary_file, $destination_file);
if ($result) {
$url = 'http://192.168.10.108/Images/' . $_FILES['new_image']['name'];
$edit = $fm->newEditCommand('Product', $_REQUEST['recid']);
$edit->setField('Thumbnail URL', $url);
$edit->execute();
} else {
die('There was an error moving the file.');
}
}
$record = $fm->getRecordById('Product', $_REQUEST['recid']);
$recid = $record->getRecordId();
$thumbnail_url = $record->getField('Thumbnail URL');
if ( $thumbnail_url == '' ) {
$thumbnail = '';
} else {
$thumbnail = '<p><img src="' . $thumbnail_url . '" /></p>';
}
?>
<html>
<head>
<title>upload_image</title>
</head>
<body>
<form action="upload_image.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="recid" value="<?php echo $recid; ?>" />
Upload image: <input type="file" name="new_image" />
<input type="submit" name="action" value="Upload" />
</form>
<?php echo $thumbnail;?>
</body>
</html>



Når jeg oploader får jeg:
"There was an error moving the file"

Tak for interessen. Nogen ideer?
Avatar billede HBP2 Praktikant
02. februar 2011 - 09:05 #7
Som beskrevet tidligere, du skal ikke bruge det filnavn som er angivet i $_FILES. Men det gør du:

$dest_file = $image_directory . $_FILES['new_image']['name'];

Her er $_FILES['new_image']['name'] sikkert noget i retningen af

/Library/Webserver/Documents/BillederTilPHP/Blomst.jpg

og så bliver $dest_file til noget som sikekrt ikke er lovligt. Brug evt.

$dest_file = $image_directory . basename($_FILES['new_image']['name']);
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