php:使用“enctype =“multipart/form-data””的文件加载不起作用

Posted

技术标签:

【中文标题】php:使用“enctype =“multipart/form-data””的文件加载不起作用【英文标题】:php: file load with "enctype="multipart/form-data"" not working 【发布时间】:2022-01-24 05:20:15 【问题描述】:

我是 php/html 的菜鸟。我正在尝试加载文件,但我的代码不起作用,总是出错。 php:

<?php if(isset($_POST["upload"])) ?>
    <div class="col-md-12"> <?
        $target_file= "firmware/". basename($_FILES["fileToUpload"]["name"]);
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) 
            echo "file". basename( $_FILES["fileToUpload"]["name"]). " loeded";
         else 
            echo "Error";
         ?>
    </div>
<?  ?>

不工作的html:

<div class="col-sm-12">
     <div class="row">
        <form method="post" action="?s=firmware" enctype="multipart/form-data" ><div class="col-sm-6">
                <div class="form-group">
                    <input type="file" name="fileToUpload" id="fileToUpload" class="form-control">
                </div></div>
                <div class="col-sm-5">
                <div class="form-group">
                    <button type="submit" name="upload" value="upload" class="btn btn-primary">Upload</button>
                </div></div>
        </form>
    </div>
</div>

当我输入另一个表格时,它正在工作:

<div class="col-sm-12">
     <div class="row">
        <form method="post" action="?s=firmware" enctype="multipart/form-data" ><div class="col-sm-6">
         </form>
       <form method="post" action="?s=firmware" enctype="multipart/form-data" ><div class="col-sm-6">
                <div class="form-group">
                    <input type="file" name="fileToUpload" id="fileToUpload" class="form-control">
                </div></div>
                <div class="col-sm-5">
                <div class="form-group">
                    <button type="submit" name="upload" value="upload" class="btn btn-primary">Upload</button>
                </div></div>
        </form>
    </div>
</div>

你能帮我解决一下吗?

【问题讨论】:

您在代码中的任何地方都没有检查'error' 键以确定是否有上传并且上传成功。 我的意思是“回声”错误“;”。我打印了加载的文件,但它显示空白“”。 但是,为什么不把$_FILES["fileToUpload"]["error"] 作为第一步呢?即使它与您当前的问题无关,这也是显而易见的事情。 【参考方案1】:

请看一看。你在 PHP 标记中犯了一个错误。

<?php if(isset($_POST["upload"])) 
// Desired directory structure
$structure = './firmware';

// to mkdir() must be specified.
if (!file_exists($structure)) 
    mkdir($structure, 0777, true);

?>
<div class="col-md-12"> <?php
$target_file= "firmware/". basename($_FILES["fileToUpload"]["name"]);
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) 
    echo "file". basename( $_FILES["fileToUpload"]["name"]). " loeded";
 else 
    echo "Error";

 ?>
</div>
<div class="col-sm-12">
<div class="row">
<form method="post" action="?s=firmware" enctype="multipart/form-data" ><div 
class="col-sm-6">
    <div class="form-group">
        <input type="file" name="fileToUpload" id="fileToUpload" 
       class="form-control">
        </div></div>
        <div class="col-sm-5">
        <div class="form-group">
            <button type="submit" name="upload" value="upload" 
            class="btn btn-primary">Upload</button>
        </div></div>
</form>

【讨论】:

啊对不起,复制/粘贴问题是错误的,原始代码不同。让我编辑我的问题。谢谢。

以上是关于php:使用“enctype =“multipart/form-data””的文件加载不起作用的主要内容,如果未能解决你的问题,请参考以下文章

排除在“enctype=‘multipart/form-data’”之外的MultipartException

php:使用“enctype =“multipart/form-data””的文件加载不起作用

如何在laravel中使用jquery将行添加到数据表中

ajaxFileUpload只能上传一次,和上传同名图片不能上传等bug问题

PHP 5.6 如何使用 CURL 上传文件

从 Restful API 返回要在视图上显示的字符串