如何获得所选文件的完整路径更改<输入类型= ' file ' >使用javascript, jquery-ajax
How to get full path of selected file on change of <input type=‘file’> using javascript, jquery-ajax?
如何在使用<input type=‘file’>
选择文件时获得文件的完整路径
<input type="file" id="fileUpload">
<script type="text/javascript">
function getFilePath(){
$('input[type=file]').change(function () {
var filePath=$('#fileUpload').val();
});
}
</script>
,但filePath变量包含所选文件的only name
,而不是full path
。
我在网上搜索了它,但似乎出于安全原因浏览器(FF,chrome)只是给出文件名。
是否有其他方法来获得所选文件的完整路径?
出于安全原因,浏览器不允许这样做,即浏览器中的JavaScript无法访问文件系统,但是使用HTML5文件API,只有Firefox提供mozFullPath
属性,但是如果你试图获得值,它返回一个空字符串:
$('input[type=file]').change(function () {
console.log(this.files[0].mozFullPath);
});
https://jsfiddle.net/SCK5A/所以不要浪费你的时间了。
edit:如果你需要文件的路径来读取文件,你可以使用FileReader API来代替。这里有一个关于SO的相关问题:在上传之前预览图像
Try This:
它会给你一个临时路径不是准确的路径,你可以使用这个脚本,如果你想在这个jsfiddle的例子中显示选定的图像(尝试通过选择图像和其他文件):-
JSFIDDLE
下面是代码:- HTML: -
<input type="file" id="i_file" value="">
<input type="button" id="i_submit" value="Submit">
<br>
<img src="" width="200" style="display:none;" />
<br>
<div id="disp_tmp_path"></div>
JS: -
$('#i_file').change( function(event) {
var tmppath = URL.createObjectURL(event.target.files[0]);
$("img").fadeIn("fast").attr('src',URL.createObjectURL(event.target.files[0]));
$("#disp_tmp_path").html("Temporary Path(Copy it and try pasting it in browser address bar) --> <strong>["+tmppath+"]</strong>");
});
您不能这样做-浏览器将不允许这样做,因为安全问题。
当使用input type=file对象选择文件时,其值为属性的值取决于"Include local"的值上传文件到服务器时的目录路径"的安全设置用于显示包含该输入的Web页面的安全区域对象。
只返回所选文件的完全限定文件名启用此设置时。禁用该设置后,InternetExplorer 8用字符串替换本地驱动器和目录路径C:'fakepath'以防止不当的信息泄露。
和
您错过了);
this在更改事件函数的末尾。
也不要为change event创建函数,而是像下面这样使用,
<script type="text/javascript">
$(function()
{
$('#fileUpload').on('change',function ()
{
var filePath = $(this).val();
console.log(filePath);
});
});
</script>
你不能。安全阻止您了解任何关于客户端计算机的文件系统-它甚至可能没有一个!它可能是MAC电脑、个人电脑、平板电脑或能上网的冰箱——你不知道、不可能知道、也不会知道。让你有完整的路径可以给你一些关于客户端的信息——特别是如果它是一个网络驱动器。
事实上,你可以在特定条件下得到它,但它需要ActiveX控件,并且在99.99%的情况下无法工作。
你不能用它来恢复文件到原始位置(因为你绝对无法控制下载的存储位置,或者即使它们被存储),所以在实践中,它对你来说没什么用。
您可以使用以下代码获取上传文件的工作本地URL:
<script type="text/javascript">
var path = (window.URL || window.webkitURL).createObjectURL(file);
console.log('path', path);
</script>
你是认真的吗?
$('#i_file').change( function(event) {
var tmppath = URL.createObjectURL(event.target.files[0]);
$("img").fadeIn("fast").attr('src',tmppath);
});
一个有趣的注意事项:虽然这在web上不可用,如果你在电子中使用JS,那么你可以这样做。
使用标准的HTML5文件输入,您将在选定的文件上收到一个额外的path
属性,包含实际的文件路径。
完整文档在这里:https://github.com/electron/electron/blob/master/docs/api/file-object.md
可以,如果您可以选择上传整个文件夹
<input type="file" webkitdirectory directory multiple/>
更改事件将包含:
.target.files[...].webkitRelativePath: "FOLDER/FILE.ext"
但是它不包含整个绝对路径,只包含相对路径。Firefox也支持
这是我的工作解决方案
const path = (window.URL || window.webkitURL).createObjectURL(file);
它将返回一个blob URL以在本地访问该文件
你不应该这样做…我认为在最新的浏览器中尝试它是无用的(据我所知)…但是,所有最新的浏览器都不允许这个…
一些其他的链接,你可以通过,找到一个解决方案,如获得值服务器端,但不是在客户端(javascript)
使用jQuery从文件输入的完整路径
如何从Firefox 3中的HTML输入表单中获取文件路径
文件元素有一个数组调用files
它包含了你需要的所有必要的东西
var file = document.getElementById("upload");
file.addEventListener("change", function() {
for (var i = 0; i < file.files.length; i++) {
console.log(file.files[i].name);
}
}, false);
可以使用FileReader API来更改img元素的src。
https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL只能通过IE11和MS Edge获取所选文件的完整路径。
var fullPath = Request.Form.Files["myFile"].FileName;
$('input[type=file]').change(function () {
console.log(this.files[0].path);
});
这是正确的格式
- 使用模式格式化Number类型输入中的值
- 在 JavaScript 中单击函数时两个日期类型输入之间的差异的代码
- 在codeigneter中按类型输入框显示数据库中的数据
- 已从'上传文件;文件'img字段中未显示类型输入字段
- 如何使用ReactTestUtils设置HTML5文件类型输入
- 检测用户拖动范围类型输入
- 无法在使用 Java 脚本创建的表单中设置提交类型输入
- 按钮类型输入上的点击事件不起作用
- 如何使用javascript更改隐藏类型输入字段的值
- sap.m中的自定义输入类型.输入sap-ui5
- 如何使用jquery动态添加/删除文件类型输入字段
- 提交事件未捕获提交类型输入
- Jquery - info/docs关于适用于表单中不同类型输入元素的属性列表
- 从Mobile Safari'日期/时间类型输入字段触发哪些事件?
- 饼状图II -动态值从范围类型输入
- 我可以在文件类型输入中显示文件大小吗?
- 新的webkit在数字类型输入中将十进制逗号转换为~ dot,反之亦然.该浏览器特性的Javascript名称
- 如何在javascript中验证具有相同名称的多个相同类型输入
- 邮件类型输入:如果邮件错误或正确,动态改变按钮的颜色/文本
- 如何将文件类型输入传递到javascript中,并将其用于另一个php页面