【问题标题】:Get real path instead of 'fakepath' in file upload在文件上传中获取真实路径而不是“假路径”
【发布时间】:2018-05-23 09:11:32
【问题描述】:

我面临以下问题:

当用户上传带有 HTML 文件输入的文件时,我想接收文件路径本身。例如,我只得到C:/fakepath/filename.txt

我了解浏览器知道文件的确切路径是出于安全原因。所以我想知道是否有可能通过一些 hack、.net 中的某种方式或使用额外的 jquery/js 插件来获取文件的完整路径。

为什么

我们不想将文件本身上传到我们的服务器文件系统,也不想上传到数据库。我们只想将本地路径存储在数据库中,这样当同一个用户打开站点时,他可以单击该路径并打开他的本地文件系统。

对这种方法有什么建议或建议吗?

如果这真的不可能像

How to resolve the C:\fakepath?

How To Get Real Path Of A File Using Jquery

我猜我们需要想出一个不同的想法。但由于有些答案真的很老,我想现在也许有解决办法。谢谢大家

【问题讨论】:

标签: javascript html vb.net file-upload


【解决方案1】:

你做不到。

如果你找到方法,浏览器制造商会在发现时修复这个重大安全漏洞。

【讨论】:

    【解决方案2】:

    由于我的目标是让最终用户可以看到上传的文件名,然后通过 php mail() 函数将其发送,我为解决这个问题所做的只是:

    在你的 js 文件中

    旧功能:

    var fileuploadinit = function(){
        $('#career_resume').change(function(){
            var pathwithfilename = $('#career_resume').val();
            $('.uploadedfile').html("Uploaded File Name :" + pathwithfilename).css({
                'display':'block'
            });
        });
    };
    

    修正函数:

    var fileuploadinit = function(){
        $('#career_resume').change(function(){
            var pathwithfilename = $('#career_resume').val();
            var filename = pathwithfilename.substring(12);
            $('.uploadedfile').html("Uploaded File Name :" + filename).css({
                'display':'block'
            });
        });
    };
    $(document).ready(function () {
    fileuploadinit();
    });
    

    旧结果:

    上传文件名:C:\fakepath\Coverpage.pdf

    新结果:

    上传文件名:Coverpage.pdf

    希望对您有所帮助:)

    【讨论】:

      【解决方案3】:

      您需要在浏览器框外运行自己的代码来执行此操作,因为浏览器被设计为不允许这样做。

      我的意思是一些丑陋的东西,比如 ActiveX、flash、COM 对象、自定义浏览器扩展或其他可以打开它自己的 OpenFileDialog 并在您的输入字段中插入该值的花哨的安全漏洞。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-02
        • 2014-06-28
        • 2021-04-03
        • 1970-01-01
        • 2021-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多