`
wencan83
  • 浏览: 40705 次
  • 性别: 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控件里的实际路径的解决代码

    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

    本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结

    这里我们按浏览器分,主要包括IE6,IE7/8 和Firefox3, 不包含Opera,Safari和Chrome,这三个基本上需求很小,没有研究。 总结一下就是: IE6下可以直接从file的value获取图片路径来显示预览。 IE7和IE8下通过select...

    html入门到放弃笔记

    2、Mozilla Firefox 3、Google Chrome 4、Apple Safari 5、Opera Opera(欧朋) 3、主要技术 1、HTML 2、CSS 3、Javascript 2、HTML入门(重点) 1、什么是HTML Hyper Text Markup Language 超级 文本 标记 ...

    KODExplorer 芒果云-资源管理器

    - 非root解压问题 不能解压 - list oexe 图标问题 - 用户目录不存在判断 - fileCahe 互斥锁 reset 不用 - ie 8~10样式问题调整 ###ver2.6 `2014/7/6` ---- ####update: - 完全性优化;加入严格的校验机制 - ...

    agenda-html:在不打开Emacs的情况下导出org-agendaHTML版本

    我每隔约15分钟从crontab中运行一次,以使我的主页使用firefox和chrome作为我的组织议程的最新版本。配置在config.el修改org-agenda-files以包含要包含在议程中的org文件的路径。 为HTML输出设置所需的位置agenda-...

    大名鼎鼎SWFUpload- Flash+JS 上传

    在FireFox中,如果窗口的滚动条没有回滚到顶部,那么Flash无法加载 Race-conditions when files are cached 兼容ASP.Net Forms SWFUpload v2 延续了SWFUpload的设计目标,将UI分离以交给开发人员控制和后续扩展 ...

    兼容IE(678)FF缩略图的使用方法.doc

    在Web开发中,-Compatible_BROWSER(IE6、7、8)和Firefox(FF)都是常用的浏览器,缩略图的使用方法是每个开发者都需要掌握的。本文将详细介绍在IE(678)和FF浏览器中使用缩略图的方法,通过实例教程,帮助开发者...

    new-tab:根据json生成一个简单且静态的New-Tab-Page

    Firefox问题 出于安全原因,Firefox不久前取消了配置“新选项卡”页面的功能,因此我们需要一种解决方法。 在Firefox安装的基本目录中,创建以下两个文件,分别包含相应的内容: autoconfig.cfg 路径设置为HTML...

    IBM WebSphere Portal门户开发笔记01

    3、一般用户不能访问内容 49 4、页面导航不能分页 49 5、一些portal常见问题 49 6、Portal中调用PUMA SPI管理用户和组信息 51 7、WCM内存溢出的解决方法 53 七、组件及其标签 53 (一)、标签 53 1、jsp组件 53 2、...

    Winternals.Administrator.Pak.5.0.KeyGen.part3

    2.网络工具,包括:文件共享、网络驱动器映射和TCP/IP设置,同时ERD Commander 2005较2003不同的一个地方是集成了Mozilla Firefox网页浏览器,网络功能更加完善。 3.系统工具,包括9个组件: Crash Analyer,主要是...

    Shenzhen_ParkingMap:基于echarts的深圳停车地图

    由于jQuery加载的是本地JSON数据,部分浏览器无法正常显示HTML的内容,目前已知使用FireFox可直接打开 使用chrome打开HTML时,需从cmd进入chrome安装目录,然后输入“chrome.exe --allow-file-access-from-files”...

    取证工具:取证分析工具的集合

    取证工具取证分析工具的集合。 仍在进行中...免责声明仅用于教育用途。 作者不对恶意使用负责!依存关系: lxml: : olefile: ://pypi.python.org/pypi/olefile/0.44 PyPDF2... firefox_scanner:用于解析Firefox配

    Winternals.Administrator.Pak.5.0.KeyGen.part4

    2.网络工具,包括:文件共享、网络驱动器映射和TCP/IP设置,同时ERD Commander 2005较2003不同的一个地方是集成了Mozilla Firefox网页浏览器,网络功能更加完善。 3.系统工具,包括9个组件: Crash Analyer,主要是...

    Winternals.Administrator.Pak.5.0.KeyGen.part2

    2.网络工具,包括:文件共享、网络驱动器映射和TCP/IP设置,同时ERD Commander 2005较2003不同的一个地方是集成了Mozilla Firefox网页浏览器,网络功能更加完善。 3.系统工具,包括9个组件: Crash Analyer,主要是...

    更改新标签「Change New Tab」-crx插件

    就像以前在Firefox中可用的browser.newtab.url一样。 大小:5 kB使用此扩展名,您可以更改打开新标签页时显示的页面。 将您喜欢的网站设置为开始标签页。 另外,您可以从本地磁盘构建和设置自己的起始页。 只需创建...

    一款比较好用的.net在线编辑器

    2.全面支持,IE7,IE8,FireFox3.0,FireFox3.5,Opera8,Opera9,Safari等浏览器。 3.新增控件直接保存文件功能。 4.新增控件直接读取文本、网页文件功能。 5.新增控件直接读取WEB网页功能。 6.新增控制用户上传文件类型...

    Change New Tab-crx插件

    就像以前在Firefox中可用的browser.newtab.url一样。 大小:5 kB使用此扩展名,您可以更改打开新标签页时显示的页面。 将您喜欢的网站设置为开始标签页。 另外,您可以从本地磁盘构建和设置自己的起始页。 只需创建...

    PythonScripts:用于杂项任务的Home Python脚本

    一组用于执行各种任务的Python脚本: (文件/文本操作,HTTP请求,文件下载,HTML解析器) modules / file_system_functions-获取文件名,路径,... addons_download-通过直接URL的Firefox插件下载器addons_parse-从

Global site tag (gtag.js) - Google Analytics