如何在JavaScript中将PHP文件名指定为变量值?

时间:2012-04-30 12:54:10

标签: php javascript html5 upload

我使用这个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>

3 个答案:

答案 0 :(得分:0)

不,如果没有上传文件名并检查$_FILES数组,就无法知道文件名 但是,您可以发出一个AJAX请求,该请求将上传文件并返回文件名,以便您可以在视图中添加它

答案 1 :(得分:0)

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

答案 2 :(得分: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']获取文件名。

相关问题