`
wencan83
  • 浏览: 42175 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

firefox3不能获得html file的全路径的问题

阅读更多

今天这个问题困扰了我很久,就是firefox3不能获得html file的全路径的问题

因为我做的电子商务网站是要在firefox上面运行的,在后台管理中,需要一个

添加图片的功能,添加图片的时候是需要使用js来预览上传的图片的,所以需要

做一个这样的功能。

 

一开始我是以为只要用imgFile.value就可以获取上传文件控件的文件的绝对路径。

<script language="javascript" type="text/javascript">
    function PreviewImg(imgFile) {
        var newPreview = document.getElementById("imgfengmian");
        newPreview.src = imgFile.value;
    }
</script>

 

但是在测试的时候,发现firefox的情况下,只能获取文件的文件名,在IE下则可获取文件的绝对路径,

上网查了一下资料,原来firefox已经禁用了这个value的属性来获取文件的绝对路径,因为firefox以

安全问题,把获取路径给禁用了,有些hacker可以利用这个文件路径将文件上传到服务器。

 

之后我找到了一个解决方法,就是利用firefox提供的函数来获取获取文件路径的问题

<script language="javascript" type="text/javascript">
    function PreviewImg(imgFile) {
        var newPreview = document.getElementById("imgfengmian");
        alert(imgFile.files.item(0).getAsDataURL());
    }
 
</script>

 

这样,就会输出文件的路径,但是这个文件的路径是经过firefox加密的,如下图

 

整个页面的HTML代码,可以上传文件后通过预览来看见上传的图片

<%@ Page Title="商品管理-淘书网" Language="C#" MasterPageFile="~/admin/adminMain.master"
    AutoEventWireup="true" CodeFile="productmanage.aspx.cs" Inherits="admin_productmanage" %>
  
<asp:Content ID="Content1" ContentPlaceHolderID="M_ContentPlaceHolder" runat="Server">
  
    <script language="javascript" type="text/javascript">
        function PreviewImg(imgFile) {
            var newPreview = document.getElementById("imgfengmian");
            newPreview.src = imgFile.files.item(0).getAsDataURL();
            alert(imgFile.value);
            alert(imgFile.files.item(0).getAsDataURL());
        }
  
    </script>
  
    <link href="../css/productmanage.css" rel="stylesheet" type="text/css" />
    <div id="camanager" class="round2">
        <h3>
            添加商品</h3>
        <div class="con">
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <p>
                        商品名称:<asp:TextBox ID="txtname" runat="server"></asp:TextBox>
                    </p>
                    <p>
                        所属类别:<asp:DropDownList ID="ddlca" runat="server" DataSourceID="ObjectDataSource1"
                            DataTextField="caName" DataValueField="categoryId">
                        </asp:DropDownList>
                    </p>
                    <p>
                        商品价格:<asp:TextBox ID="txtprice" runat="server"></asp:TextBox>
                    </p>
                    <p>
                        作    者:<asp:TextBox ID="txtauthor" runat="server"></asp:TextBox>
                    </p>
                    <p>
                        出 版 社:<asp:TextBox ID="txtpublisher" runat="server"></asp:TextBox>
                    </p>
                    <p>
                        商品封面:<asp:FileUpload ID="fulfengmian" runat="server" onchange="PreviewImg(this)" />
                        <img id="imgfengmian" alt="" src="" height="110px" width="110px" />
                    </p>
                    <p>
                        商品库存:<asp:TextBox ID="txtquan" runat="server"></asp:TextBox>
                    </p>
                    <p>
                        商品介绍:<asp:TextBox ID="txtintro" runat="server" Columns="40" Rows="6" TextMode="MultiLine"></asp:TextBox>
                    </p>
                    <p>
                        <asp:Button ID="btnadd" runat="server" Text="添加" />
                        <input id="Reset1" type="reset" value="重置" /><asp:ObjectDataSource ID="ObjectDataSource1"
                            runat="server" SelectMethod="GetAllCategory" TypeName="EeconomicBLL.CategoryManager">
                        </asp:ObjectDataSource>
                    </p>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
        <div class="footer">
            <p>
                 </p>
        </div>
    </div>
</asp:Content>

 

 

firefox里面提供的方法的总结

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>input type=file & Firefox 3</title>
</head>
  
<body>
      
<h1>input type=file & Firefox 3</h1>
      
<script type="text/javascript">
// <![CDATA[
  
function inputFileOnChange() {    
    if(document.getElementById('my-file').files) {
        // Support: nsIDOMFile, nsIDOMFileList
        alert('value: ' + document.getElementById('my-file').value);
        alert('files.length: ' + document.getElementById('my-file').files.length);
        alert('fileName: ' + document.getElementById('my-file').files.item(0).fileName);
        alert('fileSize: ' + document.getElementById('my-file').files.item(0).fileSize);
        alert('dataurl: ' + document.getElementById('my-file').files.item(0).getAsDataURL());
        alert('data: ' + document.getElementById('my-file').files.item(0).getAsBinary());
        alert('datatext: ' + document.getElementById('my-file').files.item(0).getAsText("utf-8"));
    };
};
  
// ]]>
</script>
      
<div>
    <input type="file" name="my-file" id="my-file" onchange="inputFileOnChange();" />
</div>
      
</body>
</html>

 

fileName :用于获取到用户所选文件的名称,这和直接取value值所得到的结果一样。

fileSize :得到用户所选文件的大小。

getAsBinary() :得到用户所选文件的二进制数据。

getAsDataURL() :得到用户所选文件的路径,该路径被加密了,目前只能在FireFox中使用。

getAsText() :得到用户所选文件的指定字符编码的文本。

 

 

ie6中

var file_url = document.getElementById("file").value;

 

ie7.8

var file = document.getElementById("file");  
file.select();  
var file_url = document.selection.createRange().text;
分享到:
评论

相关推荐

    firefox_file.html

    关于如何从firefox中获取file控件里的实际路径的解决代码

    firefox7.0及以上版本获取图片路径方法

    在探讨如何在Firefox 7.0及以上版本中获取图片路径的方法之前,我们首先需要理解一些基本的概念和技术背景。本文将深入解析两种主要方法:利用`getAsDataURL()`和`createObjectURL()`函数,来帮助读者更好地掌握在...

    javascript 获取表单file全路径

    具体代码如下: 代码如下: &lt;html&gt; &lt;head&gt; &lt;title&gt;get file input full path&lt;/title&gt; [removed] function getFullPath(obj) { if(obj) { //ie... } //firefox else if(window.navigator.userAge

    JS获取input file绝对路径的方法(推荐)

    2. **Firefox浏览器特别处理**:由于Firefox不返回文件的完整路径,文章中提供了`readFileFirefox`函数,这个函数利用了Firefox特有的组件`Components.classes`来创建一个`nsILocalFile`实例。这个实例可以用来获取...

    解决ajaxfileupload.js在IE9,firefox下文件超大无效

    ### 解决AjaxFileUpload.js在IE9与Firefox下文件过大导致无效问题 #### 背景介绍 在处理Web前端的文件上传功能时,我们经常会遇到浏览器兼容性问题,尤其是在处理较旧版本浏览器如IE9及Firefox时。本文将详细介绍...

    不同浏览器之间路径问题Demo

    例如,Chrome和Firefox通常能正确处理相对路径,而旧版IE可能需要特殊处理。特别是涉及到URL的相对解析时,例如在使用`src`或`href`属性时,不同浏览器可能有不同的解析逻辑。 4. **文件系统访问权限**: 部分...

    javascript 火狐(firefox)不显示本地图片问题解决

    在本例中,我们通过编写一段JavaScript代码来解决Firefox浏览器不显示本地图片的问题。首先,我们定义了一个`&lt;img&gt;`标签,这个标签将用于显示图片预览。紧接着,我们编写了一个`&lt;script&gt;`标签,其中包含了一个`file...

    读取input:file的路径并显示本地图片的方法

    3. **预览图片**:对于支持FileReader API的现代浏览器(如Chrome、Firefox、Safari、Edge等),可以使用`FileReader`对象的`readAsDataURL`方法将文件内容转换为Base64编码的URL,然后设置到`&lt;img&gt;`标签的`src`属性...

    解析使用JS 清空File控件的路径值

    这种做法的优点在于,它不仅兼容FireFox浏览器,而且支持所有主流浏览器,是一种相对稳妥的清空File控件值的方法。 在文章中,由于OCR扫描识别技术的限制,可能会出现一些字词识别错误或漏识别,开发者在阅读时需要...

    取得input要素的文件路径

    在早期版本的Firefox(例如18.0)中,当用户选择文件后,开发者可以通过`input`元素的`files`属性获取到`File`对象,而`File`对象的`name`属性则提供了文件的相对路径。然而,出于安全考虑,现代浏览器(包括Firefox...

    IE8上传文件时javascript取文件的真实路径的问题(\"C:\\fakepath\\xxxxx )

    2. **利用File对象的name属性**:虽然不能获取完整路径,但可以通过`File`对象的`name`属性获取到文件名,这在某些情况下已经足够了。 3. **使用FormData上传文件**:在需要将文件上传到服务器的情况下,可以创建一...

    python模拟firefox浏览器抓取数据

    ### Python 模拟 Firefox 浏览器抓取数据 #### 一、准备工作 为了实现用Python模拟Firefox浏览器抓取网页数据的功能,我们需要准备并安装一些必要的工具和库。 ##### 1.1 安装 Selenium Selenium 是一个强大的...

    Firefox技巧应用宝典

    【Firefox技巧应用宝典】是针对Firefox浏览器一系列实用技巧的集合,旨在提升用户在使用Firefox时的效率和体验。以下是对各个技巧的详细说明: 一、启动提速新招 通过在浏览器地址栏输入“about:config”,我们可以...

    filemanager-0.0.2.zip

    KindEditor的设计理念是简洁高效,它支持多种浏览器环境,包括Chrome、Firefox、Safari、IE等主流浏览器,这使得它在各种环境下都能保持良好的兼容性和稳定性。其轻量级的特性使得加载速度快,对服务器资源的需求...

    javascript firefox不显示本地预览图片问题的解决方法

    然而,由于安全策略的限制,Firefox浏览器默认不允许直接通过JavaScript访问本地文件系统,因此不能直接通过`&lt;img&gt;`标签的`src`属性加载本地文件路径来实现图片预览。这个问题可以通过一些技巧来解决,比如使用`file...

    IE火狐内核本地打开网页

    而火狐,即Firefox,是由Mozilla基金会开发的开源浏览器,其内核名为Gecko,它遵循W3C标准,具有良好的跨平台性。 要在Winform应用中使用这两种内核打开网页,开发者通常会借助嵌入式浏览器控件。对于IE内核,微软...

    firefox下input type=&quot;file&quot;的size是多大

    在Firefox浏览器中,`&lt;input type="file"&gt;` 这一HTML元素用于创建一个文件上传控件。与其他浏览器不同,Firefox并不直接支持通过CSS的`width`属性来定义该控件的宽度。然而,Firefox确实提供了`size`属性,允许...

Global site tag (gtag.js) - Google Analytics