Πρόβλημα με file upload

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

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

Απάντηση
dtravlos
Δημοσιεύσεις: 244
Εγγραφή: 29 Ιαν 2009 15:03
Τοποθεσία: Keratsini
Επικοινωνία:

Πρόβλημα με file upload

Δημοσίευση από dtravlos » 24 Μαρ 2010 15:42

Καλησπέρα. Έχω ένα πίνακα στη βάση με τα εξής πεδία: id, title, content, published, promote, cat_id. Θέλω στη φόρμα να έχω και ένα πεδίο για file upload. προσπάθησα να τροποποιήσω το script που έχω για το ανέβασμα της εικόνας αλλά δεν..... Μπορεί κάποιος να με βοηθήσει στο πώς να το κάνω;;; Ευχαριστώ πολύ!!!

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Πρόβλημα με file upload

Δημοσίευση από fafos » 24 Μαρ 2010 15:57

dtravlos έγραψε:Καλησπέρα. Έχω ένα πίνακα στη βάση με τα εξής πεδία: id, title, content, published, promote, cat_id. Θέλω στη φόρμα να έχω και ένα πεδίο για file upload. προσπάθησα να τροποποιήσω το script που έχω για το ανέβασμα της εικόνας αλλά δεν..... Μπορεί κάποιος να με βοηθήσει στο πώς να το κάνω;;; Ευχαριστώ πολύ!!!
anelyse to.. to "αλλά δεν" shmainei polla kai synxronos tipota...

dtravlos
Δημοσιεύσεις: 244
Εγγραφή: 29 Ιαν 2009 15:03
Τοποθεσία: Keratsini
Επικοινωνία:

Πρόβλημα με file upload

Δημοσίευση από dtravlos » 24 Μαρ 2010 16:04

Σωστά... και συγγνώμη που ήμουν εντελώς ασαφής. Σας παραθέτω το script που έχω για το ανέβασμα εικόνας... Υπάρχει κάποιος τρόπος να το τροποποιήσω ώστε να δέχεται αρχεία pdf,doc,docx και το κάθε αρχείο να αποθηκεύεται με τον αριθμό του id που υπάρχει στη βάση;

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


if ($Submit)
	{
		if (substr($_FILES["upload"]["name"],strlen($_FILES["upload"]["name"])-3,3) == "jpg")
		{
			$uploadDir = "../product-images/";
			$upload_name=$prod_id.".jpg";
			$dest = $uploadDir.$upload_name;
			if (move_uploaded_file($_FILES['upload']['tmp_name'],$dest))
			{
				list($width, $height) = getimagesize($dest);
				if ($width > 1024 or $height > 768)
				{
					if ($width > $height)
					{
						$newWidth = 1024;
						$ratio = round($height/$width,2);
						$newHeight = $newWidth * $ratio;
					}
					else
					{
						$newHeight = 768;
						$ratio = round($width/$height,2);
						$newWidth = $newHeight * $ratio;
					}			
					$src_img = imagecreatefromjpeg($dest);
					$dst_img = imagecreatetruecolor($newWidth,$newHeight);
					imagecopyresampled($dst_img,$src_img,0,0,0,0,$newWidth,$newHeight,imagesx($src_img),imagesy($src_img));
					imagejpeg($dst_img,$dest);		
				}		
				$thumb_name=$prod_id."_s.jpg";
				$thumb_path="../product-images/".$thumb_name;
				$thumb_w=140;
				$thumb_h=100;
				$src_img = imagecreatefromjpeg($dest);
				$dst_img = imagecreatetruecolor($thumb_w,$thumb_h);
				imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,imagesx($src_img),imagesy($src_img));
				imagesetthickness($dst_img,1);
				$color=imagecolorallocate($dst_img, 209, 159, 42);
				imageline($dst_img,0,0,0,$thumb_h,$color);
				imageline($dst_img,0,0,$thumb_w,0,$color);
				imageline($dst_img,$thumb_w-1,0,$thumb_w-1,$thumb_h-1,$color);
				imageline($dst_img,0,$thumb_h-1,$thumb_w-1,$thumb_h-1,$color);
				imagejpeg($dst_img,$thumb_path);

σ αυτό το script ¨οπου υπάρχει το prod_id θα το κάνω πχ theme_id... αλλά πώς θα το τροποποιήσω να δέχετε τους παραπάνω τύπους αρχείων;;;;;;;

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Πρόβλημα με file upload

Δημοσίευση από fafos » 24 Μαρ 2010 16:20

auth h function afora images.. esy xreiazesai kati pio aplo:

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

$fname = $theme_id;
 	$pdf = $_FILES['upload']['tmp_name']; 
  	$epdf = $_FILES['upload']['name'];

if($pdf !=''){
$extapdf = explode('.',$epdf);
$extapdf = array_reverse($extapdf);
$extpdf = '.'.$extapdf[0];

if($extpdf =='.pdf' || $extpdf =='.doc' || $extpdf =='.docx'){
$path1= "fakelos/".$fname.".pdf";

copy($HTTP_POST_FILES['upload']['tmp_name'], $path1);


$pdfile = $fname.$extpdf;

} else { echo 'lathos format arxeiou';}

}





dtravlos
Δημοσιεύσεις: 244
Εγγραφή: 29 Ιαν 2009 15:03
Τοποθεσία: Keratsini
Επικοινωνία:

Πρόβλημα με file upload

Δημοσίευση από dtravlos » 24 Μαρ 2010 16:47

Ευχαριστώ πάρα πολύ για τη βοήθεια! Έχω βάλει τον κώδικα... κάνει proccess κανονικά αλλά δεν ανεβάζει το αρχείο.... Τι μπορεί να έχω κάνει λάθος; τα δεδομένα όμως τα περνάει στη βάση... παραθέτω τον κώδικα μήπως βγει κάποια άκρη...

Κώδικας για προσθήκη δεδομένων:

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

	<?php
	if &#40;$Submit&#41;
	&#123;
		if &#40;$sub_id == 0&#41;
		&#123;
			$category = $cat;
		&#125;
		else
		&#123;
			$category = $sub_id;
		&#125;
		if &#40;$price == ''&#41;
		&#123;
			$price = 0;
		&#125;
		mysql_query&#40;"INSERT INTO themata &#40;title, content, published, promote, cat_id&#41; VALUES &#40;'$title', '$content', $published, $promote, $category&#41;"&#41;;
		$pk = mysql_insert_id&#40;&#41;;
?>
	 
<meta http-equiv="refresh" content="1;URL=new-thema-file.php?id=<?php echo $pk; ?>">

και ο κώδικας για το ανέβασμα του αρχείου:

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

<?php
	extract&#40;$_REQUEST&#41;;
	include '../includes/connect.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Διαχείρηση - Προσθήκη Αρχείου</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="admin-styles.css" rel="stylesheet" type="text/css">
</head>
<body>
 
<div align="center">
<?php
	if &#40;$Submit&#41;
	&#123;
		$fname = $pk;
   		 $pdf = $_FILES&#91;'upload'&#93;&#91;'tmp_name'&#93;;
    	 $epdf = $_FILES&#91;'upload'&#93;&#91;'name'&#93;;

			if&#40;$pdf !=''&#41;&#123;
			$extapdf = explode&#40;'.',$epdf&#41;;
			$extapdf = array_reverse&#40;$extapdf&#41;;
			$extpdf = '.'.$extapdf&#91;0&#93;;
			
			if&#40;$extpdf =='.pdf' || $extpdf =='.doc' || $extpdf =='.docx'&#41;&#123;
			$path1= "../themata/".$fname.".pdf";
			
			copy&#40;$HTTP_POST_FILES&#91;'upload'&#93;&#91;'tmp_name'&#93;, $path1&#41;;
			
			
			$pdfile = $fname.$extpdf;
			
			&#125; 
			
			else &#123; echo 'lathos format arxeiou';&#125;
			
			&#125; 
	?>
 
<meta http-equiv="refresh" content="1;URL=add-thema.php">
<?php
			 
	&#125;
	else
	&#123;
?>
<table width="800" border="0" cellspacing="0" cellpadding="0" align="center">
	<tr>
		<td height="25" align="center" valign="middle"  >Ανεβάστε Φωτογραφία</td>
	</tr>
	<tr>
		<td align="center" valign="top" >
			<br>
			<form action="<?php echo $PHP_SELF ?>" method="post" enctype="multipart/form-data" name="new_file">
			<table width="400" border="0" cellspacing="0" cellpadding="0" align="center" class="content">
				<tr>
					<td height="25" align="left" valign="middle">Θέμα&#58;
						<input type="hidden" name="id" id="id" value="<?php echo $id; ?>"></td>
					<td height="25" colspan="2" align="left" valign="middle">
						<?php
							$prod_result = mysql_query&#40;"SELECT title FROM themata WHERE id = '$id'",$db&#41;;
							while &#40;$prodRow = mysql_fetch_array&#40;$prod_result&#41;&#41;
							&#123;
								echo $id." - ".$prodRow&#91;'title'&#93;;
							&#125;
						?>
					</td>
				</tr>
				<tr>
					<td width="150" height="30" align="left" valign="middle">Επιλέξτε αρχείο&#58;</td>
					<td width="250" height="25" colspan="2" align="left" valign="middle"><input name="upload" type="File" size="24" value = "<?php echo $upload; ?>"></td>
				</tr>
				<tr>
					<td height="30" colspan="2" align="center" valign="middle"><input name="Submit" type="submit" class="forms" value="Καταχώρηση"></td>
				</tr>
			</table>
			</form>
		</td>
	</tr>
	<tr>
		<td align="center" valign="top"><img src="admin-images/bottom-01.jpg" width="800" height="1"></td>
	</tr>
</table>
<?php
	&#125;
?>
</div>
</body>
</html>
τι μπορεί να έχει μπερδευτεί;;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με file upload

Δημοσίευση από korgr » 24 Μαρ 2010 16:58

O φακελος "themata" εχει δικαιωματα εγγραφης?
Επισης βλεπω πως ακομα και doc να ειναι το αρχειο, θα παρει την επεκταση pdf. Γιατι?
Κανονικα θα επρεπε να ειναι:

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

         if&#40;$extpdf =='.pdf' || $extpdf =='.doc' || $extpdf =='.docx'&#41;&#123;
         $path1= "../themata/".$fname.$extpdf;

dtravlos
Δημοσιεύσεις: 244
Εγγραφή: 29 Ιαν 2009 15:03
Τοποθεσία: Keratsini
Επικοινωνία:

Πρόβλημα με file upload

Δημοσίευση από dtravlos » 24 Μαρ 2010 17:07

korg σ ευχαριστώ για τη βοήθεια... ο φάκελος έχει δικαιώματα εγγραφής. το άλλαξα με το δικό σου κώδικα αλλά πάλι δεν μου ανεβάζει τα αρχεία στον server.... τη μεταβλητή την περνάω με $pk = mysql_insert_id(); το οποίο το έβαζα συνήθως για τις εικόνες... Τώρα με αυτό τον τύπο αρχείων είναι σωστό ή πρέπει να το αφαιρέσω;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με file upload

Δημοσίευση από korgr » 24 Μαρ 2010 17:29

απο τη στιγμη που θες τα αρχεια που ανεβαζεις να εχουν ως filename το id της εγγραφης, τοτε ειναι σωστο.

Το path ειναι σωστο? Απο που τρεχει το script? Απο φακελο "admin" ή απο root? Ρωταω μηπως σου την κανει το ../ στο path.

Μετα αρχισε το debuging. Απενεργοποιησε την εγγραφη στη βαση (αφου λες ολα οκ εκει) και δωσε ρητη τιμη στο $pk (πχ $pk="myfile") και γενικα βαζε echo σε διαφορα σημεια να παρακολουθεις τη ροη του script.

dtravlos
Δημοσιεύσεις: 244
Εγγραφή: 29 Ιαν 2009 15:03
Τοποθεσία: Keratsini
Επικοινωνία:

Πρόβλημα με file upload

Δημοσίευση από dtravlos » 24 Μαρ 2010 17:48

αυτό μάλλον θα μου βγάλει την πίστη... θα το προσπαθήσω όσο μπορώ περισσότερο... ελπίζω να βρώ άκρη... όταν(πρώτα ο Θεός) το τελειώσω το συγκεκριμένο script θα το κάνουμε post στα tutorials για να μην τραβήξει κανείς άλλος το δικό μου παλούκι :hammer: :hammer: :hammer: :hammer: :hammer: :pint:

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Πρόβλημα με file upload

Δημοσίευση από fafos » 24 Μαρ 2010 17:54

to if ($Submit) epalhtheutai h thelei if ($_POST[Submit]) ?

dtravlos
Δημοσιεύσεις: 244
Εγγραφή: 29 Ιαν 2009 15:03
Τοποθεσία: Keratsini
Επικοινωνία:

Πρόβλημα με file upload

Δημοσίευση από dtravlos » 24 Μαρ 2010 18:48

Σε όλες τις ιπόλοιπες φόρμες επαληθεύεται... λες να δοκιμάσω σ αυτήν μήπως κολλάει πουθενά;

dtravlos
Δημοσιεύσεις: 244
Εγγραφή: 29 Ιαν 2009 15:03
Τοποθεσία: Keratsini
Επικοινωνία:

Πρόβλημα με file upload

Δημοσίευση από dtravlos » 25 Μαρ 2010 23:22

Καλησπέρα και πάλι! Επειδή άκρη δεν έχω βρεί ακόμα... μήπως ξέρει κανείς αν μπορώ να ενσωματώσω τον κώδικα για το file upload μέσα στη σελίδα που έχω τη φόρμα και ταυτόχρονα κάνω και INSERT INTO? έχω και τα αρχεία πιο πάνω... γιατί δε μου φαίνεται λογικό να κολλάει εφόσον και ο κώδικας είναι σωστός(για το ανέβασμα τουλάχιστον) αλλά και στο φάκελο έχω δώσει 777....

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Πρόβλημα με file upload

Δημοσίευση από Apostolis_38 » 26 Μαρ 2010 10:39

Το script που ανεβάζει το αρχείο είναι όντως ένα επίπεδο κάτω από το themata;
(../themata)

Βάλε

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

$path1= $_SERVER&#91;'DOCUMENT_ROOT'&#93;."/themata/";
και κάντο echo για να δείς αν όντως το path είναι σωστό.
Πιθανόν ανάμεσα στο $_SERVER και το themata να πρέπει να δηλωθεί κι άλλος φάκελος.
Μετά βάλε όλο το σωστό path στο $path1 και ξαναδοκίμασε.

dtravlos
Δημοσιεύσεις: 244
Εγγραφή: 29 Ιαν 2009 15:03
Τοποθεσία: Keratsini
Επικοινωνία:

Πρόβλημα με file upload

Δημοσίευση από dtravlos » 26 Μαρ 2010 12:21

Επανέρχομαι!!! Έβαλα το τελευταίο path που μου είχες πεί αλλά πάλι δεν το πέρναγε... δοκίμασα να κάνω μια αλλαγή... σας παραθέτω τον κώδικα που έχω βάλει για το submit να μου πείτε αν είναι σωστός...

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

<?php
	if &#40;$Submit&#41;
	&#123;
		if &#40;$sub_id == 0&#41;
		&#123;
			$category = $cat;
		&#125;
		else
		&#123;
			$category = $sub_id;
		&#125;
		
		$fname = $id;
   		 $pdf = $_FILES&#91;'upload'&#93;&#91;'tmp_name'&#93;;
    	 $epdf = $_FILES&#91;'upload'&#93;&#91;'name'&#93;;

			if&#40;$pdf !=''&#41;&#123;
			$extapdf = explode&#40;'.',$epdf&#41;;
			$extapdf = array_reverse&#40;$extapdf&#41;;
			$extpdf = '.'.$extapdf&#91;0&#93;;
			
			if&#40;$extpdf =='.pdf' || $extpdf =='.doc' || $extpdf =='.docx'&#41;&#123;
         	$path1= "../themata/";
			
			copy&#40;$HTTP_POST_FILES&#91;'upload'&#93;&#91;'tmp_name'&#93;, $path1&#41;;
			
			
			$pdfile = $fname.$extpdf;
			
			&#125; 
			
			else &#123; echo 'Λάθος όνομα αρχείου';&#125;
			
			&#125; 
			
			mysql_query&#40;"INSERT INTO themata &#40;title, content, published, promote, cat_id&#41; VALUES &#40;'$title', '$content', $published, $promote, $category&#41;"&#41;;
		 
?>
μήπως να βάλω και τον κώδικα της φόρμας;;;

dtravlos
Δημοσιεύσεις: 244
Εγγραφή: 29 Ιαν 2009 15:03
Τοποθεσία: Keratsini
Επικοινωνία:

Πρόβλημα με file upload

Δημοσίευση από dtravlos » 26 Μαρ 2010 16:42

Επανέρχομαι!!! Μετά απο πολύ..... καφέ.... :hammer: :hammer: σας παραθέτω τον κώδικα για οποιοδήποτε θέλει να το χρησιμοποιήσει στο site του!!!

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

$extension = substr&#40;$_FILES&#91;"upload"&#93;&#91;"name"&#93;,strlen&#40;$_FILES&#91;"upload"&#93;&#91;"name"&#93;&#41;-3,3&#41; == "pdf" || substr&#40;$_FILES&#91;"upload"&#93;&#91;"name"&#93;,strlen&#40;$_FILES&#91;"upload"&#93;&#91;"name"&#93;&#41;-3,3&#41; == 			"doc" || substr&#40;$_FILES&#91;"upload"&#93;&#91;"name"&#93;,strlen&#40;$_FILES&#91;"upload"&#93;&#91;"name"&#93;&#41;-3,3&#41; == "docx";
		 
	if &#40;$extension&#41;
		&#123;
		 
	mysql_query&#40;"INSERT INTO themata &#40;title, content, published, promote, cat_id&#41; VALUES &#40;'$title', '$content', $published, $promote, $category&#41;"&#41;;
	$pk = mysql_insert_id&#40;&#41;;
	$uploadDir = "../themata/";
	$upload_name="thema".$pk.".doc";
	$dest = $uploadDir.$upload_name;
		 
			if &#40;move_uploaded_file&#40;$_FILES&#91;'upload'&#93;&#91;'tmp_name'&#93;,$dest&#41;&#41;
				&#123;
				echo "<meta http-equiv='refresh' content='0;URL=themata.php'>";
					
				
				&#125;
		 
		&#125;
Επισήμανση: Το αρχείο ανεβαίνει επιτυχώς ΜΟΝΟ όταν ο τύπος αρχείου που ανεβάζουμε είναι ίδιος με την κατάληξη που πάει στο server(*.doc) άσχετα με το άν στη μεταβλητή έχω δηλώσει και docx και pdf. Ακόμα δεν το έχω βρεί πώς να το κάνω να τα παίρνει και τα 3.... :lol: :lol: :lol:

Απάντηση

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

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

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