PHP上传的文件存在于TMP名称中,但实际上它没有上传
我在PHP中上传了一个文件,它位于数组$u文件中,tmp_名称填充了他的名字,但事实上该文件尚未上传,为什么会发生这种情况?如果tmp_名称已填写,是否意味着该名称已上载?因为我甚至将文件夹设置为0777,仍然无法在phpinfo()中上载一切都好了,请帮帮我PHP上传的文件存在于TMP名称中,但实际上它没有上传,php,apache,Php,Apache,我在PHP中上传了一个文件,它位于数组$u文件中,tmp_名称填充了他的名字,但事实上该文件尚未上传,为什么会发生这种情况?如果tmp_名称已填写,是否意味着该名称已上载?因为我甚至将文件夹设置为0777,仍然无法在phpinfo()中上载一切都好了,请帮帮我 foreach($_FILES as $file) { foreach($file['tmp_name']['new'] as $name) { echo '<br />'.$name.'<b
foreach($_FILES as $file)
{
foreach($file['tmp_name']['new'] as $name) {
echo '<br />'.$name.'<br />';
if(is_uploaded_file($name))
{
echo '1';
}
else
{
echo '0'; // shows this
}
//$res = move_uploaded_file($name, "/uploads");
//echo $res;
}
exit;
}
//exit;
您应该阅读以下内容:
这是:
看起来您不正确地访问了$\u文件
foreach($_FILES['tmp_name']['new'] as $inputName => $file)
{
// $inputName is the name attribute from the HTML form
echo '<br />'.$file.'<br />';
if( is_uploaded_file($file) )
{
echo '1';
}
else
{
echo '0';
}
//$file = umiImageFile::upload('uploads',$name,'uploads','new');
//$res = move_uploaded_file($name, "/uploads");
//echo $res;
}
foreach($\u文件['tmp\u名称]['new']为$inputName=>$file)
{
//$inputName是HTML表单中的name属性
回显“
”。$file.“
”;
如果(是否上载了文件($file))
{
回声“1”;
}
其他的
{
回音“0”;
}
//$file=umImageFile::upload('uploads',$name,'uploads','new');
//$res=移动上传的文件($name,“/uploads”);
//echo$res;
}
需要指出的一件重要事情是:如果在请求过程中没有保存上传的文件,PHP会在请求终止时将其删除,这样文件就会消失
其次,您在阵列上的循环不正确。您应该尝试使用for循环:
for ($i = 0; $i < sizeof($_FILES['new']['tmp_name']); ++$i) {
$name = $_FILES['new']['name'][$i];
$path = $_FILES['new']['tmp_name'][$i];
$err = $_FILES['new']['error'][$i];
if ($err != UPLOAD_ERR_OK) {
// check error code
// report error
continue;
}
if (is_uploaded_file($path)) {
// do something with the file
}
}
注意:如果您没有检查文件内容和扩展名,则上述操作是危险的。请注意不要允许使用.php或其他可执行扩展名上载文件。向我们展示您尝试的代码。为什么您说它没有上载?你是否真的检查了上传文件夹,或者发生了其他事情,而你认为它没有上传?发布所有代码以及显示文件未上载的任何错误消息或日志文件条目。is_uploaded_file-return false,我将tmp_名称传递给it@Divakarcool updated@Yash更新的代码没有像$file['upload\u file\u name']这样的东西是我的错。我没有注意到不必要的内部循环。根据您的数组输出,这应该可以做到。当然,我是在请求期间保存它的,我想这是唯一可以保存它的方法)上传的文件返回false,因为传递给它的值错误。在您的输出中,有3个文件出现错误
UPLOAD\u ERR\u NO\u FILE
,这意味着没有向输入传递任何文件@BlurryScript也看到了我上次的编辑。是的,我已经检查了上传错误-它是零…即使很难,我添加了/uploads/{$name}-它不工作,文件夹是0777(可写),没有错误,我的猜测是基于is文件上传-返回false,因此,tmp文件夹中似乎没有上载的文件…它也是0777…我做错了什么?$name
被假定为$\u文件['new']['name'][$I]代码>来自我上面的示例。你能用你现在的代码更新你的问题,让我知道你在用什么吗?部分问题可能是move\u uploaded\u file
中的目标目录应该是绝对或相对路径<代码>/uploads
不是正确的路径。神圣的代码…..$\u文件数组是如何被umi cms更改的,我不知道它到底是什么,但我只是更改了输入html文件的默认名称,它工作了。。。
for ($i = 0; $i < sizeof($_FILES['new']['tmp_name']); ++$i) {
$name = $_FILES['new']['name'][$i];
$path = $_FILES['new']['tmp_name'][$i];
$err = $_FILES['new']['error'][$i];
if ($err != UPLOAD_ERR_OK) {
// check error code
// report error
continue;
}
if (is_uploaded_file($path)) {
// do something with the file
}
}
move_uploaded_file($path, "uploads/{$name}");