联系表单与文件上传

时间:2016-08-23 18:35:46

标签: php html5 twitter-bootstrap-3

我想将文件上传添加到我当前的代码中。我的形式很好,不想改变它。我一直在搜索谷歌和youtube,找不到我可以添加到我当前代码的代码。当我得到的所有错误都是错误时,这是​​非常令人沮丧的。

#main {
    text-align: center;
}

.circle {
    background: #298EEA;
    display: inline-block;
    width: 80px;
    height: 80px;
    margin-top: 30px auto;
    border-radius: 50%;
    border: 15px solid #f3f5f6
}

.div {
    padding: 80px 80px 60px 80px;
    background: #282C39;
    border-radius: 3px;
    margin-top: -45px;
}

2 个答案:

答案 0 :(得分:1)

您的代码根本不处理文件上传。关于如何处理在PHP中保存文件上载有很多资源。也许如果您更新了代码以尝试处理文件上传,然后说出了什么类型的错误,那么有人可以帮助您。根据各种各样的事情你可能会得到任何数量的错误。

您是否对要将文件保存到的目录具有读/写权限?

你知道php.ini“upload_max_filesize”设置,你的文件是否小于最大上传?

这是一个有用的网站,解释了基础知识:https://davidwalsh.name/basic-file-uploading-php

答案 1 :(得分:0)

你已经完成了前端,

<form action = "material.php">

    <input type="file" name="file" enctype="multipart/form-data">

您提交的文件名将自动从$ _FILES [&#39; file&#39;] [&#39; tmp_name&#39;]数组中获取,因为输入字段的名称为&#34;文件&#34;和 tmp_name 是PHP自己添加的默认密钥。

因此,在您的后端,添加以下内容以捕获文件上载。

move_uploaded_file 就是诀窍!

<?php
    $upload_dir = "/var/www/misyte.com/uploads/";
    $filename = "uploaded_file.txt"; // Rename it to whatever file format..
    $destination = $upload_dir . "/" . $filename;

    if (move_uploaded_file($_FILES['file']['tmp_name'], $destination))
    {
        // If this here succeeds, the file has been moved to destination folder
    }
?>

作为奖励,我已经加入了我写过的功能,可以帮助您拆分在分机上收到的文件名&#34;。&#34;指出并将您上传的文件重命名为您心中的愿望:

    <?php 
        function ExplodeFileAtExtention($Filename)
        {
            $len = strlen($Filename);
            for ($i = 0; $i < $len; $i++)
            {
                $curidx = $len-($i+1);
                if ($Filename[$curidx] == '.')
                {
                    return array(substr($Filename, 0, $curidx), substr($Filename, $curidx + 1));
                }
            }
         }
    ?>

它存在的唯一原因是,有时文件名包含多于1个点字符,如&#34; some.file.name.txt&#34;,如果您只是将它拆分为第一个点字符,它仍然无法退回扩展程序。

所以,例如:

$split = ExplodeFileAtExtention("some.file.name.txt");

$filename = $split[0]; // "some.file.name"
$ext      = $split[1]; // "txt"

这样,您可以重建(重命名)上传的文件并保留扩展名,例如:

$filename= time() . "." . $ext;   // "1471979296.txt"

如果将其插入第一个代码片段,脚本将上传文件并将其存储在:

/var/www/misyte.com/uploads/1471979296.txt

这很好,因为你可能想要所有上传文件的某种模式,而不是将它们存储为

"This Awesome Window95~ filename___I__got__from my Program Files folder!!!.txt"