[英]Getting the name of an uploaded file in ie
我有一个文件上传按钮,用户单击上传功能,然后在选择文件时上传站点。 这可以完美地工作。
但是,我遇到了文件名错误,即在Chrome和Firefox中,我可以使用表单数据并从中获取文件名。 但是在ie中,它似乎抓住了整个路径并将其用作名称。 还有其他方法可以从上传的文件中获取文件名吗? 这样就可以保持一致,并且实际上只是文件名?
我的代码如下所示。
var file = $(this).prop("files")[0];
var form = new FormData($('input[name^="media"]'));
form.append("fileName", file.name);
文件的ie名称
C:UsersUsersNameFolderNameMoreComplicatedFolderNameFileDocumentName.docx
并在所有其他浏览器中将其抓取为
FileDocumentName.docx
尝试通过整个表格。 像这样
var myForm = document.getElementByTagName('form');
var form = new FormData();
form.append("myForm", myForm);
只要您使用的是IE 10及更高版本,此方法就应该对您有用。 我已经在IE-11和Chrome上测试过
<html>
<head>
<title>Get Name of uploaded file</title>
<script type="text/javascript">
function fetchFileName(fileObjId) {
var fileObj = document.getElementById(fileObjId);
var txt = "";
if ('files' in fileObj) {
if (fileObj.files.length == 0) {
txt = "Select one or more files.";
}
else {
for(var i = 0; i < fileObj.files.length; i++) {
txt += "<br><strong>" + (i+1) + ". file</strong><br>";
var file = fileObj.files[i];
if ('name' in file) {
txt += "name: " + file.name + "<br>";
}
if ('size' in file) {
txt += "size: " + file.size + " bytes <br>";
}
}
}
}
else {
if(fileObj.value == "") {
txt += "Select one or more files.";
}
else {
txt += "The files property is not supported by your browser!";
txt += "<br>The path of the selected file: " + fileObj.value;
}
}
document.getElementById("demo").innerHTML = txt;
return false;
}
</script>
</head>
<body>
File to Upload: <input type="file" name="uploadFile" id="uploadFile" />
<input type="button" value="Get File Name" onclick="return fetchFileName('uploadFile')" />
<br/><br/>
Output: <span id="demo"></span>
</body>
</html>
也请参阅-https: //www.w3schools.com/jsref/prop_fileupload_files.asp
在Internet Explorer中,您可以获得完整路径,而不仅仅是文件名。
您可以使用此正则表达式/[^\\/\\\\]*$/
匹配所需的输出。 喜欢:
var file = $(this).prop("files")[0];
var form = new FormData($('input[name^="media"]'));
// Use the regex here to get the desired output
var file_name = file.name.match(/[^\/\\]*$/)[0];
form.append("fileName", file_name);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.