【问题标题】:how do I change the text that is displayed for file input form, or " input type='file' "如何更改为文件输入表单显示的文本,或“输入类型='文件'”
【发布时间】:2016-12-19 08:16:13
【问题描述】:

有这个属性吗?因为如果有我找不到它。

我要做的只是在提交表单后回显用户选择的文件名。需要明确的是,它已经显示了文件名,但问题是表单可能以错误的状态提交,在这种情况下,黄色文本会返回“未选择文件”。我只需要在提交表单后保留文件名。

我有一个表格...

 <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data">



                    <?php
//upload files here. 

                    $fcount = 0;
                    foreach ($layouts[$my_layout] as $key => $value) {
                        //create the form
                        echo 'choose an image with an aspect ratio of ' . $value;
                        ?>
                    <input type="file" name="filesToUpload[]" >
</form>

在页面上,我想将黄色文本更改为文件名,一旦提交表单后,选择了该文件时。

【问题讨论】:

标签: php html forms input


【解决方案1】:

虽然您的明确问题是询问如何更改文本,但隐含的问题是您要设置输入的值,以便再次上传相同的文件。

你不能那样做。这将需要允许页面作者确定从用户计算机上传的文件。这将是一个严重的安全风险。

您可以做的是将上传的文件存储在服务器上(例如,在一个临时目录中,该目录会定期删除旧文件,例如使用 cron),并以新形式对其进行引用。

 <label> <input type="checkbox" name="already_uploaded_file" value="my_file_identifier" checked> Use foo.jpeg </label> 
 <label> Upload a different file <input type="file" name="foo"> </label>

【讨论】:

    【解决方案2】:

    获得文件后,您应该能够从中获取originalName 属性。试试$fileName = $request-&gt;file('name')-&gt;getClientOriginalName();

    注意:这是未经测试的,我假设 Request 对象上的 file() 方法都返回一个 UploadedFile 实例,并且 Laravel 的 UploadedFile 类要么扩展了 Symfony 的类,要么直接使用它。

    【讨论】:

    • 谢谢ash,不过我这里没有使用框架
    • 嗨,很抱歉。我在 StackOverflow 上收到了两个不同的帖子。
    • 我查看了一些用于在 PHP 中处理图像上传的旧代码:github.com/AshMenhennett/CustoMS/blob/master/lib/classes/Models/…。看看有没有帮助。
    • 虽然,该代码在提交后与文件相关。
    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2013-12-29
    相关资源
    最近更新 更多