2015-10-05 64 views
-2

我想上传一个图像文件,它前一天工作得很好。当包含输入类型文件时,表单不提交

今天,当我创建另一个输入文件时,它出错了。然后,我尝试了单个输入文件,但它不工作。

这里是我的代码:

<?php 
$isSubmit=filter_input(INPUT_POST, "submit"); 
if(isset($isSubmit){ 
    echo $_POST["fileToUpload"]; 
} 
else { 
    echo "not submited"; 
} 

?> 

<!DOCTYPE html> 
<html> 
<body> 

<form action="#" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="submit" value="submit" name="submit"> 
</form> 

</body> 
</html> 

现在,如果表单提交,它关系到其他部分并显示在浏览器的“未提交”。如果我加载任何其他页面或同一页面时,浏览器显示“本地主机正在等待..

那么除非我重新启动服务器,该项目无法加载。

但是,当输入类型文件被更改为文本或其他,它会很好。

我已经看过php.ini文件没有与最大文件大小或文件上传或交的最大文件没有问题。

+0

首页打印提交表格后会发生什么$ isSubmit内。如果 –

+1

这条线(isset($ isSubmit){错了,它应该是如果(isset($ isSubmit)){ –

+1

^^由于这个错误应该已经产生了编译失败,我们可以假设您正在使用错误的显示器关闭。* *不要这样做,而开发** – RiggsFolly

回答

0

这是修改后的代码,它在我的系统上的作品看看

改变var_dump($_FILES["fileToUpload"]);echo $_POST["fileToUpload"];

你不能从$_POST获取文件,你需要所有上传的文件信息驻留

调用数组 $_FILES

,你不能echo这直接,因为它是一个数组不是字符串

<?php 
$isSubmit=filter_input(INPUT_POST, "submit"); 
if(isset($isSubmit)) 
{ 
    var_dump($_FILES["fileToUpload"]); 
} 
else { 
    echo "not submited"; 
} 

?> 

<!DOCTYPE html> 
<html> 
<body> 

<form action="#" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="submit" value="submit" name="submit"> 
</form> 

</body> 
</html> 
+0

哈哈在if if else条件语句,否则部分被执行,当输入类型是文件 –

+0

@RehmanMalekar你使用的是什么PHP版本 – ddw147

+0

我使用PHP 5.6 –

0

试试这个:它应该显示文件数组。

<?php 
$isSubmit=filter_input(INPUT_POST, "submit"); 
if(isset($isSubmit)){//close your if block 
    print_r($_FILES["fileToUpload"]);//print file data 
} 
else { 
    echo "not submited"; 
} 

?> 

如果你在窗口尝试这样做:

开放本地主机(WAMP/XAMPP),单击服务器图标,进入PHP,PHP设置,然后选择文件上传,即启用文件上传。

+0

什么改变了,为什么? :) – Epodax

+0

@Epodax看到if block.and他应该尝试使用$ _FILES而不是$ _POST来查看数据。 –

+0

这并不是因为我不明白,而是只用“代码”的答案并没有太多帮助,解释了你做了什么以及OP做错了什么,经常帮助OP和未来的访问者更多。 – Epodax

0

如果你真的没有得到submit按钮字段数据返回,并得到[fileToUpload]['error'] = 3那么最有可能的是,你的php.ini设置乱七八糟。

这些php.ini设置都与一个文件上传:

upload_max_filesize = max size of each individual file uploaded 

max_file_uploads = max number of files (each of upload_max_filesize) size 
         allowed in a single upload 

post_max_size  = max size of the POST buffer, this includes all FILES + 
         any other fields in the form that come as well 

max_input_time  = max time allowed to upload POST data 

memory_limit  = can also need increasing if lots of big files are uploaded together 

正如你似乎缺少提交按钮,我会说,你的问题很可能是post_max_size不够大的文件和窗体上的其他字段。根据经验,估计post_max_size

简单的规则就是

post_max_size = (upload_max_filesize * max_file_uploads) 
       + extra space for the normal form fields 

因此,检查所有这些参数的值,如果你不知道该怎么从你的php.ini后的实际值更改为编辑您的的问题,我们可以提出一些建议