input type=file

IzKuFeLiQqQqQ

Registered
Здравейте имам една форма в която съм сложил <input type="file" name="file"/>където ще се качват картинки. след като се даде submit се записва в mysql нооо когато искам да го изкарам ми изписва само името и не мога нито да прегледам нито да сваля файла та въпроса ми е как мога да направя в input type=file да може да се качват картинки и когато се изкарват да ми показва направо изображението ...

а и трябва ли в mysql да се зададат накакви специални настройки на полето?

благодаря предварително
 
Nuk3 каза:
А сложил ли си във form тага това - enctype="multipart/form-data";

да, трябва да сложиш това, ако не си го сложил...

също така примерно качваш картинките в папка /files/ а пък сайта ти е site.com, в полето където записваш линка към файла трябва да запишеш целият линк, или просто при самото изкарване да добавиш нещата от теб, но аз те съветвам да го направиш при записване...

aз примерно позлвам този код:
Код:
<?php
header("Content-Type: text/html; charset=UTF-8");

if(!$_POST['submit']){
echo "
	<form method="post" action="" enctype="multipart/form-data">
	Файл: <input name="file" type="file" />
	<input type="submit" name="submit" value="Добави">
	</form>
   ";
} 
else {
$time = time();
$file = $_FILES['file']['name'];
$tmp_file = $_FILES['file']['tmp_name'];
$extension = substr($file, strrpos($file, '.'));
$newextension = explode(".", $extension);
$newextension = strtolower($newextension[1]);

$extensions = array(
/*Архиви*/		"zip", "rar", 
/*Аудио*/		"mp3", "mp4",
/*Видео*/		"avi", "mov", "wmv", "flv", "mkv", "3gp", "mpeg", "mpeg4",
/*Други*/		"txt", "swf", "sub", "srt",
/*Снимки*/		"jpg", "png", "bmp", "gif", "ico", "jpeg",
/*Уеб*/			"php", "html", "css", "htm", "js", "sql",
			);
if($file == NULL) {
echo "Моля, посочете файл за качване!";
}
elseif(!in_array($newextension, $extensions)) {
echo "Опитвате се да качите непозволен файлов формат! => $newextension";
}
elseif(in_array($newextension, $extensions)) {
$size = $_FILES['file']['size'];
if($size >= 1024) {
$size = $size/1024;
$roundsize = round($size,2);
$format = "KB";
	if($size >= 1024){
	$size = $size/1024;
	$roundsize = round($size,2);
	$format = "MB";
		if($size >= 1024){
		$size = $size/1024;
		$roundsize = round($size,2);
		$format = "GB";
			if($size >= 1024){
			$size = $size/1024;
			$roundsize = round($size,2);
			$format = "TB";
			}
		}
	}
}
$updir = "uploads";

if(!is_dir($updir)) {
$mkupdir = mkdir("uploads", 0755);
}
$makedir = mkdir("$updir/$time", 0755);
$dir = "$updir/$time/$file";
$host = $_SERVER['HTTP_HOST'];
$protocol = $_SERVER['SERVER_PROTOCOL'];
$protocol = explode("/", strtolower($protocol));
$link = "{$protocol[0]}://{$host}/{$updir}/{$time}/{$file}";
$upload = move_uploaded_file($tmp_file,$dir);

echo "
	<b>КАЧВАНЕТО Е УСПЕШНО!</b><br />
	<b>$file</b> с разширение <b>$newextension</b> и размер <b>$roundsize $format</b> <br />
	Линк: <a href="$link" title="$file">виж</a><br />
	";
}
}
?>

ако искаш може да ползваш него, като само трябва да си сложиш заявката към базата данни, която ще записва променливата $link, която е целият линк към файла :)
 
а том3кк има ли начин и да напиша кода (без формата) в някакъв друг файл и после да го инклудна щото ще стане много код ?

а как да го направя само снимки да могат да се качват да изтрия останалите формати ли ?

а и аз искам само до 6мб да може да се качва какво да променя ?

и как да направя линка да се извежда в друг файл ?

а сяла какъв трябва да е щот кат гледам ше трябва да е с NULL и др?


:roll: :oops:
 
Доспустима големина на файловете ти
<?PHP
$storage_dir = '/var/www/files';
$max_file_size = 6554432;
$max_file_size_MB = 6;

?>

За позволени формати ип после в проверката си го оправяш :)

$pozvoleni = array(".zip",".gif",".jpg",".png",".jpeg",".3gp",".rar",".bmp",".psd"); // позволени формати
 
а има ли специален начин за вкарване в БД щот аз така го правя

$vid =$_POST['vid']);
$query = mysql_query("INSERT INTO `banerstats` (`name`, `gsm`, `email`, `give` , `banerpic` , `banerpicadd` , `vid`) VALUES ('$name', '$gsm', '$email', '$give', '$banerpic','$banerpicadd','$vid');")or die(mysql_error()."<br />Грешка: ".__LINE__);

а mysql на е полето е `banerpicadd` varchar(250) collate latin1_general_ci NOT NULL,
 
направо ето ми го целия код (смесен от това което дадохте)
Код:
 	 	 <?php header('Content-type: text/html; encoding: UTF-8'); include("./config.php");?>
 <?php 

echo '<form action="" method="post">
<input type="hidden" name="vid" value="кон"/> 
Име: <br/> <input type="text" name="name" /><br/>
Email: <br/> <input type="text" name="email" /><br/>
Телефонен номер: <br/> <input type="text" name="gsm" /><br/>
<input type="radio" name="banerpic" value="stats" /> <img src="http://dhost.info/zavisimost/server/test/stats/index.php"/><br />
<input type="radio" name="banerpic" value="stats1" /> <img src="http://dhost.info/zavisimost/server/test/stats1/index.php"/> <br/>
<input type="radio" name="banerpic" value="stats2" /> <img src="http://dhost.info/zavisimost/server/test/stats2/index.php"/> <br/>
<input type="radio" name="banerpic" value="stats3" /> <img src="http://dhost.info/zavisimost/server/test/stats3/index.php"/> <br/>
<input type="radio" name="banerpic" value="stats4" /> <img src="http://dhost.info/zavisimost/server/test/stats4/index.php"/> <br/>
<input type="radio" name="banerpic" value="stats5" /> <img src="http://dhost.info/zavisimost/server/test/stats5/index.php"/> <br/>
<input type="radio" name="banerpic" value="stats6" /> <img src="http://dhost.info/zavisimost/server/test/stats6/index.php"/> <br/>
<input type="radio" name="banerpic" value="stats7" /> <img src="http://dhost.info/zavisimost/server/test/stats7/index.php"/> <br/>
<input type="radio" name="banerpic" value="stats8" /> <img src="http://dhost.info/zavisimost/server/test/stats8/index.php"/> <br/>
<input type="radio" name="banerpic" value="stats9" /> <img src="http://dhost.info/zavisimost/server/test/stats9/index.php"/> <br/>
Или качи твой банер <input type="file" name="banerpicadd" enctype="multipart/form-data" /><br/>
Права<input type="checkbox" name="give" value="не го давам" /> <img src="http://kuku-test.webege.com/job/img/info.png" title="Ако банера е направен специално за вашия сървар или просто не искате друг да има същия банер натиснете checkbox-a"/> <br/>
<input type="submit" name="submit" value="Дай поръчката">
</form>';
if($_POST['submit']){
$name = addslashes(htmlspecialchars($_POST['name']));
$gsm = addslashes(htmlspecialchars($_POST['gsm'])); 
$email = addslashes(htmlspecialchars($_POST['email'])); 
$give = addslashes(htmlspecialchars($_POST['give'])); 
$banerpic =($_POST['banerpic']); 
$banerpicadd =($_POST['banerpicadd']); 
$vid = addslashes(htmlspecialchars($_POST['vid']));
$file = $_FILES['file']['name']; 
$max_file_size = 6554432;
$max_file_size_MB = 6; 
$updir = "newbanners";
$dir = "$updir/$time/$file";
$host = $_SERVER['HTTP_HOST'];
$protocol = $_SERVER['SERVER_PROTOCOL'];
$protocol = explode("/", strtolower($protocol));
$link = "{$protocol[0]}://{$host}/{$updir}/{$time}/{$file}";
$upload = move_uploaded_file($name,$dir);
$extension = substr($file, strrpos($file, '.'));
$newextension = explode(".", $extension);
$newextension = strtolower($newextension[1]); 
$extensions = array(  "jpg", "png", "bmp", "gif", "ico", "jpeg", "rar" , "zip" );
if(!in_array($newextension, $extensions)) {
echo "Опитвате се да качите непозволен файлов формат! => $newextension";
} 

if($give == "не го давам") {
$query = mysql_query("INSERT INTO `banerstats` (`name`, `gsm`, `email`, `give` , `banerpic` , `banerpicadd` , `vid`) VALUES ('$name', '$gsm', '$email', '$give', '$banerpic','$banerpicadd','$vid');")or die(mysql_error()."<br />Грешка: ".__LINE__); //правим заявка, с която записваме информацията
   if($query == true){ 
      echo "Вие успешно добавихте вашата поръчка";
   }
   else {
      echo "Възникна грешка при добавянето на информация, опитайте отново.";
   }
}
if($give != "не го давам") {
$give2 = "давам го";
$query = mysql_query("INSERT INTO `banerstats` (`name`, `gsm`, `email`, `give` , `banerpic` , `banerpicadd` , `vid`) VALUES ('$name', '$gsm', '$email', '$give2', '$banerpic','$banerpicadd','$vid';")or die(mysql_error()."<br />Грешка: ".__LINE__); //правим заявка, с която записваме информацията
   if($query == true){ //ако всичко е успешно изваждаме резултат, защото всичко е ОК
      echo "Вие успешно добавихте вашата поръчка";
   }
   else {
      echo "Възникна грешка при добавянето на информация, опитайте отново.";
   }
}
}


?>

ето но като пост ми излизат грешки http://kuku-test.webege.com/job/testphp.php (най долу даите след като натисните пост)

как да го направя да не е задължително да се качват файлове ...

имам и проблем с checkbox-овете кат натисня някой и пак ми дава грешка ...
 
up пробвах да го опрая ама го бъгнах още повече...

пак същите проблеми дава (горен комент)

помогнете ми плс
 

Back
Горе