Javascript 未定义索引->;PHP上传不工作
PHP上传: 注意:未定义索引:文件位于 在线:Javascript 未定义索引->;PHP上传不工作,javascript,php,html,forms,Javascript,Php,Html,Forms,PHP上传: 注意:未定义索引:文件位于 在线:$count=count($_FILES['file']['name']) 运行我发现的几乎所有带有此错误的代码…仍然没有得到任何结果 PHP代码: <?php $count = 0; if(isset($_POST['uploadFinish'])) { $bcode = $_POST['code']; $newpath = "upload/".$bcode."/"; if (!file_exists($newp
$count=count($_FILES['file']['name'])代码>
运行我发现的几乎所有带有此错误的代码…仍然没有得到任何结果
PHP代码:
<?php
$count = 0;
if(isset($_POST['uploadFinish'])) {
$bcode = $_POST['code'];
$newpath = "upload/".$bcode."/";
if (!file_exists($newpath)) {
mkdir($newpath, 0755, true);
}
$count = count($_FILES['file']['name']);
if($count < 1) {
$message = "At least 1 file required"; $count='';
} else {
move_uploaded_file($_FILES['file']['tmp_name'], $newpath.'/File-'.$bcode);
}
}
?>
HTML/JS:
<button class="btn btn-primary btntrg123" id="uploadBtn" style="background: #008489; border-color: #008489">Upload file</button>
<form style="display: none!important;" id="uploadConf" method="post" enctype="multipart/form-data">
<div style='height: 0px;width:0px; overflow:hidden;'>
<input type="file" id="file" name="file[]" multiple="multiple" onclick="getFile()" class="btn btn-primary inptri123">
</div>
<input type="hidden" name="code" value="<?php echo $code; ?>">
<input name="uploadFinish" value="1" type="hidden">
</form>
<script type="text/javascript">
$(".btntrg123").click(function(event){
event.preventDefault();
$(".inptri123").trigger('click');
});
function getFile(){
document.getElementById("file").onchange = function () {
var file = this.value;
console.log(file);
var form = document.getElementById('uploadConf');
form.submit();
};
}
</script>
上传文件
我想你想检查上传的文件数量
HTML
上传文件
$(“.btntrg123”)。单击(函数(事件){
event.preventDefault();
$(“.inptri123”).trigger('click');
});
函数getFile(){
document.getElementById(“文件”).onchange=function(){
var file=this.value;
console.log(文件);
var form=document.getElementById('uploadConf');
表单提交();
};
}
试试这个
<?php
$count = 0;
if(isset($_POST['uploadFinish'])) {
$bcode = $_POST['code'];
$newpath = "upload/".$bcode."/";
echo $newpath;
if (!file_exists($newpath)) {
mkdir($newpath, 0755, true);
}
$count = count($_FILES['file']['name']);
if($count < 1) {
$message = "At least 1 file required"; $count='';
} else {
$total = count($_FILES['file']['name']);
for( $i=0 ; $i < $total ; $i++ ) {
move_uploaded_file($_FILES['file']['tmp_name'][$i], $newpath.'/File-'.$bcode.$_FILES['file']['name'][$i]);
}
}
}
?>
在表单中添加了action属性李>
action=“upload.php”
在PHP代码中做了一些细微的更改来处理上传
当多文件上传时,您可以使用
$name=$_FILES['file']['name'][$index];
$tmp=$_FILES['file']['tmp_name'][$index];
您的代码应该如下所示
$total = count($_FILES['file']['name']);
for( $i=0 ; $i < $total ; $i++ ) {
$tmp= $_FILES['file']['tmp_name'][$i];
if (!(empty($tmp )){
$path= "/upload/" . $_FILES['file']['name'][$i];
if(move_uploaded_file($tmp, $path)) {
echo $_FILES['file']['name'][$i]. ' uploaded';
}
}
}
$total=计数($_文件['file']['name']);
对于($i=0;$i<$total;$i++){
$tmp=$\u文件['file']['tmp\u名称'][$i];
如果(!(空($tmp)){
$path=“/upload/”$\u文件['file']['name'][$i];
if(移动上传的文件($tmp$path)){
echo$_文件['file']['name'][$i].'upload';
}
}
}
您似乎只是错过了一个表单操作
应该是这样的:
或者,您可以使用javascript
为表单附加事件:
function processForm(e) {
if (e.preventDefault) e.preventDefault();
/* do what you want with the form */
// You must return false to prevent the default form behavior
return false;
}
var form = document.getElementById('uploadConf');
if (form.attachEvent) {
form.attachEvent("submit", processForm);
} else {
form.addEventListener("submit", processForm);
}
$\u FILES['file']
如果您的代码是可读的(格式很好),那么它将是arraySmall Point。它也有可能是可调试的var\u dump($\u FILES);
来检查它实际包含的内容。var\u dump($\u FILES);=>array(0){}我在您的表单上没有看到任何ajax请求或操作
。相同:注意:未定义索引:$count行上的文件是否可以用此代码替换php并在上载后检查返回0。这意味着该文件未以某种方式在表单中提交。可能是因为按钮的工作方式和表单的提交方式。可能是原因,让我检查一下当我上传新代码时,它会返回$newpath值。只有纯文本:upload/codePHP注意:未定义索引:带if的行上的文件(count($\u FILES['file']['name']))@Laurenti你仍然可以得到未定义的索引文件!你有上传文件夹吗?没有手动创建上传文件夹是的,我收到了PHP通知:未定义的索引:文件在$total上(1次),然后像1000个相同的通知$tmp内为:)上传一个13kb的imgSubmitting表单:var form=document.getElementById('uploadConf')); 表单提交();您只需提交
它,但没有操作
或事件
的表单将不起任何作用(只需在某些浏览器中重新加载页面)。您需要说明,应该在服务器上执行什么文件或操作。php(在我的逻辑中..我有点初学者)捕获的是,然后执行代码。将php移动到一个文件中,并将action=“upload.php”放在表单中,并添加了在getFile中触发的提交输入(删除表单.submit()),我收到了相同的通知。@LaurentiuLomnasan使用开发工具检查浏览器的“网络”选项卡。文件提交了吗?我看到文件(initiator upload.php)状态为200。
function processForm(e) {
if (e.preventDefault) e.preventDefault();
/* do what you want with the form */
// You must return false to prevent the default form behavior
return false;
}
var form = document.getElementById('uploadConf');
if (form.attachEvent) {
form.attachEvent("submit", processForm);
} else {
form.addEventListener("submit", processForm);
}