<?php
if(copy($_FILES["filename"]["tmp_name"],
"e:/server/".$_FILES["filename"]["name"]))
{
echo("Файл: ");
echo($_FILES["filename"]["name"]);
echo(" Успешно загружен!");
} else {
echo("Ошибка загрузки файла");
}
?>
файл загоняется через форму
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename">
<input type="submit" value="Загрузить">
</form>
Захотелось как то разукрасить кнопку "Обзор.." нашёл пример с использованием java, после долгих разборов кода вродь как заработала, прикрутил кнопку "загрузить" и....
Notice: Undefined index: filename in E:\Apache2.2\htdocs\upload.php on line 3
Notice: Undefined index: filename in E:\Apache2.2\htdocs\upload.php on line 4
Warning: copy() [function.copy]: Filename cannot be empty in E:\Apache2.2\htdocs\upload.php on line 4
Ошибка загрузки файла
Вот обновлённый код формы:
<style type="text/css">
.someDiv
{
margin-left: 300px;
margin-top: 30px;
border: 1px solid Silver;
height: 300px;
}
#File1
{
float: left;
}
.customFile
{
width: 219px;
margin-left: -225px;
cursor: pointer;
height: 32px;
z-index: 2;
filter: alpha(opacity: 0);
position: relative;
opacity: 0;
float: left;
}
.fakeButton
{
z-index: 1;
position: relative;
width: 64px;
height: 32px;
background: url(images/button.png) no-repeat left top;
float: left;
}
.blocker
{
position: relative;
z-index: 3;
width: 150px;
height: 21px;
background: url(images/transparent.gif);
float: left;
margin-left: -240px;
}
.FileName
{
float: left;
height: 15px;
font-family: Verdana;
font-size: 8pt;
color: Gray;
margin-left: 5px;
margin-top: 2px;
padding-top: 1px;
padding-left: 19px;
padding-right: 7px;
}
.minus
{
cursor: pointer;
margin-left: 5px;
width: 16px;
height: 16px;
background: url(images/plusminus.gif) no-repeat left -16px;
float: left;
margin-top: 3px;
}
.wrapper
{
float: left;
width: 100%;
display: block;
margin: 3px;
}
</style>
<script type="text/javascript">
var inputNumber = 1;
window.onload = WindowOnLoad;
function HandleChanges(id)
{
file = document.getElementById(id).value;
reWin = /.*\\(.*)/;
var fileTitle = file.replace(reWin, "$1"); //выдираем название файла для w*s
reUnix = /.*\/(.*)/;
fileTitle = fileTitle.replace(reUnix, "$1"); //выдираем название для *nix
fileName = document.getElementById('name'+id);
fileName.innerHTML = fileTitle;
var RegExExt =/.*\.(.*)/;
var ext = fileTitle.replace(RegExExt, "$1");//и его расширение
var pos;
if (ext){
switch (ext.toLowerCase())
{
case 'doc': pos = '0'; break;
case 'bmp': pos = '16'; break;
case 'jpg': pos = '32'; break;
case 'jpeg': pos = '32'; break;
case 'png': pos = '48'; break;
case 'gif': pos = '64'; break;
case 'psd': pos = '80'; break;
case 'mp3': pos = '96'; break;
case 'wav': pos = '96'; break;
case 'ogg': pos = '96'; break;
case 'avi': pos = '112'; break;
case 'wmv': pos = '112'; break;
case 'flv': pos = '112'; break;
case 'pdf': pos = '128'; break;
case 'exe': pos = '144'; break;
case 'txt': pos = '160'; break;
default: pos = '176'; break;
};
fileName.style.display = 'block';
fileName.style.background = 'url(images/icons.png) no-repeat 0 -'+pos+'px';
};
};
function WrapEverything()
{
inputs = getElementsByClassName('customFileInput');
for (var i = 0 ; i < inputs.length; i++)
wrap(inputs[i]);
};
function wrap(element)
{
wraper = document.createElement('div');
wraper.className = 'wrapper';
fileInput = document.createElement('input');
fileInput.value = '';
fileInput.setAttribute('type','file');
var id = element.getAttribute('id');
wraper.setAttribute('id','wrapper'+id);
fileInput.setAttribute('id',id);
fileInput.className = 'customFile';
fileInput.onchange = function(){ HandleChanges(id) };
fileInput.onmouseover = function() { MakeActive(id) };
fileInput.onmouseout = function() { UnMakeActive(id) };
fileName = document.createElement('div');
fileName.style.display = 'none';
fileName.style.background = 'url(images/icons.png)';
fileName.setAttribute('id','name'+id);
fileName.className = "FileName";
bb = document.createElement('div');
bb.setAttribute('id','bb' + id);
bb.className = 'fakeButton';
bl = document.createElement('div');
bl.setAttribute('id','bl' + id);
bl.className = 'blocker';
wraper.appendChild(bb);
wraper.appendChild(bl);
wraper.appendChild(fileInput);
wraper.appendChild(fileName);
x = element.parentNode;
x.replaceChild(wraper,element);
};
function AddInput(container)
{
wraper = document.createElement('div');
wraper.className = 'wrapper';
fileInput = document.createElement('input');
fileInput.value = '';
fileInput.setAttribute('type','file');
var id = 'customFileInput'+inputNumber;
wraper.setAttribute('id','wrapper'+id);
fileInput.setAttribute('id',id);
fileInput.className = 'customFile';
fileInput.onchange = function(){ HandleChanges(id) };
fileInput.onmouseover = function() { MakeActive(id) };
fileInput.onmouseout = function() { UnMakeActive(id) };
fileName = document.createElement('div');
fileName.style.display = 'none';
fileName.style.background = 'url(images/icons.png)';
fileName.setAttribute('id','name'+id);
fileName.className = "FileName";
bb = document.createElement('div');
bb.setAttribute('id','bb' + id);
bb.className = 'fakeButton';
bl = document.createElement('div');
bl.setAttribute('id','bl' + id);
bl.className = 'blocker';
deleteButton = document.createElement('div');
deleteButton.className = 'minus';
deleteButton.onclick = function() { DeleteCustomInput(id) };
wraper.appendChild(bb);
wraper.appendChild(bl);
wraper.appendChild(fileInput);
wraper.appendChild(fileName);
wraper.appendChild(deleteButton);
container.appendChild(wraper);
inputNumber++;
};
function DeleteCustomInput(id)
{
i = document.getElementById('wrapper'+id);
i.parentNode.removeChild(i);
}
function WindowOnLoad()
{
WrapEverything();
};
function MakeActive(id)
{
bb = document.getElementById('bb'+id);
bb.style.backgroundPosition = '0 -32px';
};
function UnMakeActive(id)
{
bb = document.getElementById('bb'+id);
bb.style.backgroundPosition = '0 0';
};
function getElementsByClassName(searchClass) {
var classElements = new Array();
var els = document.getElementsByTagName('*');
var elsLen = els.length;
var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
};
function addCustomFileInput(container)
{
w = document.getElementById(container);
AddInput(w);
};
</script>
<form action="upload.php" method="post" enctype="multipart/form-data">
<div id="MyInputs">
<input id="File1" type="file" class="customFileInput" name="filename" />
</div>
<div class="form-actions form-wrapper" id="edit-actions" ><input type="submit" id="edit-submit" value="загрузить" class="form-submit" /></div>
</form>
Прошу помощи в данной проблеме, т.к. писанины много а файлы не загружаются...
Спустя 3 часа, 18 минут, 55 секунд (7.02.2012 - 03:08) redreem написал(а):
для начала выясните во всех ли браузерах такая картина. может просто-напросто решение не кроссбраузерное. хоть понятно будет что дело в чем-то другом.
Спустя 4 часа, 10 минут, 23 секунды (7.02.2012 - 07:18) Hahol404 написал(а):
не, везде не грузит, причём если вообще файл не выбирать и нажать загрузить, вылетает тоже самое..
Спустя 52 минуты, 43 секунды (7.02.2012 - 08:11) nugle написал(а):
Hahol404
ты хочешь сделать загрузку на аякс или просто сделать кнопку обзор?
ты хочешь сделать загрузку на аякс или просто сделать кнопку обзор?
Спустя 1 час, 33 минуты, 20 секунд (7.02.2012 - 09:44) Hahol404 написал(а):
кнопка обзор уже есть, она меня вполне радует, потому что я с ней промаялся не один час, вот : 109.194.19.18/down.php если запашет конечно, если все эти java прелести убрать, то файлы загружаются, а если не убирать, функция обзора срабатывает, java выводит названия файла, расширение, и т.д. но при нажатии на кнопку загрузить, php файл не видет, точнее видет, но как то каряво, вот..поэтому и прошу объяснить почему файлы не грузятся и желательно помочь с решением, т.к. дело явно в javascript о котором я имею довольно смутные познания...
![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
Спустя 53 минуты, 48 секунд (7.02.2012 - 10:38) nugle написал(а):
пишет ошибки в файле upload.php, покажи сам upload
Спустя 2 минуты, 41 секунда (7.02.2012 - 10:41) Hahol404 написал(а):
дак я его и не менял
<?php
if(copy($_FILES["filename"]["tmp_name"],
"e:/server/".$_FILES["filename"]["name"]))
{
echo("Файл: ");
echo($_FILES["filename"]["name"]);
echo(" Успешно загружен!");
} else {
echo("Ошибка загрузки файла");
}
?>
Спустя 4 минуты, 40 секунд (7.02.2012 - 10:46) nugle написал(а):
а ну понятно в чем дело, не передает он параметры на другую страницу, у тебя filename пустой, напиши алгоритм, как ты делал кнопку обзор
Спустя 1 минута, 53 секунды (7.02.2012 - 10:48) inpost написал(а):
echo '<pre>'.$_FILES;
В обработчик и посмотри, передаётся ли файл, и может под другим именем.
Спустя 2 минуты, 57 секунд (7.02.2012 - 10:50) Hahol404 написал(а):
Делал ориентируясь на статью http://vremenno.net/design/file-inputs-styling/
надеюсь не забанят за скрытую рекламу
надеюсь не забанят за скрытую рекламу
![rolleyes.gif](http://phpforum.ru/html/emoticons/rolleyes.gif)
Спустя 55 минут, 33 секунды (7.02.2012 - 11:46) Hahol404 написал(а):
Цитата (inpost @ 7.02.2012 - 07:48) |
echo '<pre>'.$_FILES; В обработчик и посмотри, передаётся ли файл, и может под другим именем. |
засунул...пишет ток Array
Спустя 6 минут, 26 секунд (7.02.2012 - 11:52) inpost написал(а):
Hahol404
Не то :)
Не то :)
echo '<pre>'.print_r($_FILES,1);
Спустя 3 минуты, 40 секунд (7.02.2012 - 11:56) bodja написал(а):
Откройте в опере инспектирование вашей кнопки и полей и посмотрите ,что этот код у вас вытворил с атрибутами и их значениями.
Спустя 11 минут, 23 секунды (7.02.2012 - 12:08) Hahol404 написал(а):
Цитата (inpost @ 7.02.2012 - 08:52) |
Hahol404 Не то :) echo '<pre>'.print_r($_FILES,1); |
так, при отправке с обычной формы пишет
Array
(
[filename] => Array
(
[name] => 1268654883_3d47256645ef.jpg
[type] => image/jpeg
[tmp_name] => D:\WINDOWS\Temp\php1F.tmp
[error] => 0
[size] => 13575
)
)
а вот с java формы тишина..
Array
(
)
Спустя 30 минут, 13 секунд (7.02.2012 - 12:38) Hahol404 написал(а):
Цитата (bodja @ 7.02.2012 - 08:56) |
Откройте в опере инспектирование вашей кнопки и полей и посмотрите ,что этот код у вас вытворил с атрибутами и их значениями. |
Вот что выдала Opera....
<form action="upload.php" method="post" enctype="multipart/form-data">
<table>
А ЭТО НЕ РАБОТАЕТ
<br/>
<br/>
<div id="MyInputs">
<div class="wrapper" id="wrapperFile1">
<div id="bbFile1" class="fakeButton" style="background-position: 0px 0px"/>
<div id="blFile1" class="blocker"/>
<input type="file" id="File1" class="customFile"/>
<div style="display: none; background-attachment: scroll; background-repeat: repeat; background-image: url("http://192.168.1.2/images/icons.png"); background-position: 0% 0%; background-size: auto; background-origin: padding-box; background-clip: border-box; background-color: transparent" id="nameFile1" class="FileName"/>
</div>
</div>
</form>
Спустя 17 минут, 12 секунд (7.02.2012 - 12:55) nugle написал(а):
тут имя укажи
<input type="file" id="File1" class="customFile" name="filename"/>
<input type="file" id="File1" class="customFile" name="filename"/>
Спустя 17 минут, 52 секунды (7.02.2012 - 13:13) Hahol404 написал(а):
name="filename" и так стоит, а класс у мя не class="customFile", а class="customFileInput", иначе копка пропадает..
Спустя 3 минуты, 30 секунд (7.02.2012 - 13:16) Hahol404 написал(а):
опа, кнопка пропала. но при этом и ошибки спали, ток вылетает мол файла нету
и при echo '<pre>'.print_r($_FILES,1);
что это значит?
Warning: copy() [function.copy]: Filename cannot be empty in E:\Apache2.2\htdocs\upload.php on line 5
Ошибка загрузки файла
и при echo '<pre>'.print_r($_FILES,1);
Array
(
[filename] => Array
(
[name] =>
[type] =>
[tmp_name] =>
[error] => 4
[size] => 0
)
)
что это значит?
Спустя 14 минут, 56 секунд (7.02.2012 - 13:31) nugle написал(а):
я не вижу, чтобы тут, стоял name=filename
<form action="upload.php" method="post" enctype="multipart/form-data">
<table>
А ЭТО НЕ РАБОТАЕТ
<br/>
<br/>
<div id="MyInputs">
<div class="wrapper" id="wrapperFile1">
<div id="bbFile1" class="fakeButton" style="background-position: 0px 0px"/>
<div id="blFile1" class="blocker"/>
<input type="file" id="File1" class="customFile"/>
<div style="display: none; background-attachment: scroll; background-repeat: repeat; background-image: url("http://192.168.1.2/images/icons.png"); background-position: 0% 0%; background-size: auto; background-origin: padding-box; background-clip: border-box; background-color: transparent" id="nameFile1" class="FileName"/>
</div>
</div>
</form>
Спустя 9 минут, 22 секунды (7.02.2012 - 13:41) Hahol404 написал(а):
ну в коде то у меня стоит, хрен его знает почему опера не показала...
![user posted image](http://img13.imageshost.ru/img/2012/02/07/image_4f31001783d8b.jpg)
Спустя 17 минут, 38 секунд (7.02.2012 - 13:58) nugle написал(а):
Hahol404
значит яваскрипт меняет как то имя, посмотри еще раз статью
значит яваскрипт меняет как то имя, посмотри еще раз статью
Спустя 45 минут, 49 секунд (7.02.2012 - 14:44) Hahol404 написал(а):
всё, разобрался, добавил в java код строку fileInput.setAttribute('name','filename');
и всё заработало, всем большое спасибо за помощь, тему можно закрывать
и всё заработало, всем большое спасибо за помощь, тему можно закрывать
![rolleyes.gif](http://phpforum.ru/html/emoticons/rolleyes.gif)