我使用这个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>
答案 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']
获取文件名。