Ъплоуд на файлове

Soul_Stealler

Registered
Такам ... имам проблем ...
направил съм код за ъплоуд на файлове. Най-обикновен, нищо особено няма в него, само че не мога да го приспособя към формата. Проблема идва от това че в нея могат да се добавят полета за ъплоуд. И по точно в това че всичките са в array. Т.е. file[0], file[1], file[2] и т.н.

Ако не сте схванали за какво говоря -

Код:
<input type="file" name="file[]"> 
<input type="file" name="file[]">

Проблема е че после нещо не мога да взема стойноста с $_FILES.
$upname = $_FILES['file']['0']['name'];

някакви идеи ? :?
 
Не, не става.
Забравих да кажа че кода за качването е във функция зададен.
Т.е.

Код:
for($i=0;$i<=(count($_POST['file']));$i++){
			if ($pics[$i] != null){
			$razshir = strtolower(strrchr($pics[$i], "."));
				if ( $razshir == ".jpeg" || $razshir == ".jpg" || $razshir == ".png" || $razshir == ".gif" || $razshir == ".bmp"){ 
						
				upload_the_pic($conn, $rez, $pics[$i], $bar_id,$i);
				
				
			
				}
			}
		}

upload_the_pic


ето как е сега
Код:
function upload_the_pic($conn, $rez, $pic, $bar_id, $i){

$uptype = $_FILES['file'][$i]['type'];
$upload_dir = "bar_pics/".basename($_FILES['file'][$i]['name']);
$upname = $_FILES['file'][$i]['name'];
$upsize = $_FILES['file'][$i]['size'];
 
Soul_Stealler каза:
for($i=0;$i<=(count($_POST['file']));$i++){
if ($pics[$i] != null){
$razshir = strtolower(strrchr($pics[$i], "."));
if ( $razshir == ".jpeg" || $razshir == ".jpg" || $razshir == ".png" || $razshir == ".gif" || $razshir == ".bmp"){

upload_the_pic($conn, $rez, $pics[$i], $bar_id,$i);



}
}
}

така никога няма да ги преброи и винаги ще е NULL.

Soul_Stealler каза:
for($i=0;$i<=(count($_FILES['file']['name']));$i++){
if ($pics[$i] != null){
$razshir = strtolower(strrchr($pics[$i], "."));
if ( $razshir == ".jpeg" || $razshir == ".jpg" || $razshir == ".png" || $razshir == ".gif" || $razshir == ".bmp"){

upload_the_pic($conn, $rez, $pics[$i], $bar_id,$i);



}
}
}
 
Никога не ми е била силна страна уплоада на фаилове и функциите... затова виж какво спретнах и мисли по него начин.

Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body body onload="init()">
<form enctype="multipart/form-data" name="send" method="post" action="">
<table class="ttop2" id="emailTable">
<tbody id="TBody">
<tr>
<td class="nogradient" colspan="4" style="text-align: left;">
<input type="button" name="add_attachment" value="Закачи файл" onclick="addAttachment()">
</td>
</tr>
<tr>
<td class="gradient" height="65" colspan="4" style="text-align: left;">
<div style="position: relative; bottom: -6px; left: 6px;">
</div>
<input type="submit" value="Изпрати" name="submit">
</td>
</tr>
</tbody>
</table>
</form>

<script type="text/javascript" language="javascript">
var trow;

function init()
{
trow = 2;
}

function addAttachment()
{
var tbodyElem = document.getElementById("TBody");
var trElem, tdElem, txtNode, tmpString;

trElem = tbodyElem.insertRow(trow);

tdElem = trElem.insertCell(0);
tdElem.className = "gradient";
tdElem.setAttribute("style", "text-align: right;");
txtNode = document.createTextNode("Закачи файл " + (trow - 1) + ":");
tdElem.appendChild(txtNode);


tdElem = trElem.insertCell(1);
tdElem.className = "gradient";
tdElem.setAttribute("style", "text-align: left;");
tdElem.setAttribute("colspan", "3");

var input = document.createElement("INPUT");
input.setAttribute("type", "file");
input.setAttribute("name", "attachment" + (trow - 1));
input.setAttribute("size", "60");
input.setAttribute("value", "");
input.setAttribute("id", "attachment" + (trow - 1));
tdElem.appendChild(input);

trow++;
}
</script>

<?php
if($_POST['submit'])
{
foreach($_FILES as $file => $value) {
$_tmpname = $_FILES[$file]['tmp_name'];
$_filename = $_FILES[$file]['name'];
copy($_tmpname,"111/".$_filename) 
or die('error 1');
}
}
 
Работи.
Само че има ли начин да се ограничат броя на полетата и да има бутон да се маха последното, защото изобщо не съм запознат с JS :?
 
жоро имаш грешка :S
foreach($_FILES as $file => $value) {
$tmpname = $_FILES[$file]['tmp_name'];
$filename = $_FILES[$file]['name'];
това тоест няма да уплоадне $file ще е само цифра кое е както ++ се ползва но тук е с foreach
доуправих даже сложих да има limit 10 за ъплоад аа ще може ли да го довършиш че нещо ми дава
Warning: Illegal offset type in C:\xampp\htdocs\t.php on line 70

Warning: Illegal offset type in C:\xampp\htdocs\t.php on line 71
Грешка с качването на файловете
Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body body onload="init()">
<form enctype="multipart/form-data" name="send" method="post" action="">
<table class="ttop2" id="emailTable">
<tbody id="TBody">
<tr>
<td class="nogradient" colspan="4" style="text-align: left;">
<input type="button" name="add_attachment" value="Закачи файл" onclick="addAttachment()">
</td>
</tr>
<tr>
<td class="gradient" height="65" colspan="4" style="text-align: left;">
<div style="position: relative; bottom: -6px; left: 6px;">
</div>
<input type="submit" value="Изпрати" name="submit">
</td>
</tr>
</tbody>
</table>

<script type="text/javascript" language="javascript">
var trow;

function init()
{
trow = 2;
}

function addAttachment()
{
var tbodyElem = document.getElementById("TBody");
var trElem, tdElem, txtNode, tmpString;

trElem = tbodyElem.insertRow(trow);

tdElem = trElem.insertCell(0);
tdElem.className = "gradient";
tdElem.setAttribute("style", "text-align: right;");
if(trow < 12){
txtNode = document.createTextNode("Закачи файл " + (trow - 1) + ":");
tdElem.appendChild(txtNode);


tdElem = trElem.insertCell(1);
tdElem.className = "gradient";
tdElem.setAttribute("style", "text-align: left;");
tdElem.setAttribute("colspan", "3");

var input = document.createElement("INPUT");
input.setAttribute("type", "file");
input.setAttribute("name", "attachment" + (trow - 1));
input.setAttribute("size", "60");
input.setAttribute("value", "");
input.setAttribute("id", "attachment" + (trow - 1));
tdElem.appendChild(input);

trow++;
}
}
</script>
</form>

<?php
if($_POST['submit'])
{
foreach($_FILES as $file => $value) {
$tmpname = $_FILES[$value]['tmp_name'];
$filename = $_FILES[$value]['name'];
@move_uploaded_file($tmpname,"./css".$filename) or die('Грешка с качването на файловете');
}
}
?>
 

Back
Горе