1

我使用这个 html5 脚本来获取我的 php 表单中的文件信息。我想要的不是上传文件,而是只获取文件名而不上传文件。可能吗?

这是脚本:

<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object

// files is a FileList of File objects. List some properties.
var output = [];
for (var i = 0, f; f = files[i]; i++) {
  output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
              f.size, ' bytes, last modified: ',
              f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
              '</li>');
 }
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
}

document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
4

3 回答 3

0

给定以下形式:

<form name="myForm" action="send.php">
    <input type="file" id="fileSelect">
    <input type="hidden" name="filename">
    <input type="submit">
</form>

要停止文件实际上传,不要给文件输入字段一个name 属性。相反,您创建一个hidden输入字段,当用户选择一个文件时,使用文件名填充该字段,例如:

<script>
    var fileSelect = document.getElementById('fileSelect');

    var handleFileSelect = function(e) {
        var files = e.target.files;
        if(files.length === 1) {
            document.forms.myForm.filename.value = files[0].name;
        }
    };

    fileSelect.addEventListener('change', handleFileSelect, false);
</script>

现在,当用户提交表单时,您可以使用$_GET['filename'].

于 2012-05-01T18:12:43.473 回答
0

No, you can't know the file name without uploading it and checking $_FILES array.
You can however issue an AJAX request that will upload the file and return the filename so you can add it in your views

于 2012-04-30T12:59:43.067 回答
0

您已经在f.namejavascript 变量中有文件名。如果要将其发送到服务器,只需将其放在表单内的隐藏输入中即可。或者您可以使用 ajax 请求发送此值。

于 2012-04-30T13:03:37.977 回答