今天这个问题困扰了我很久,就是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;
|
但是在测试的时候,发现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());
|
这样,就会输出文件的路径,但是这个文件的路径是经过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.files.item(0).getAsDataURL());
|
< link href = "../css/productmanage.css" rel = "stylesheet" type = "text/css" />
|
< div id = "camanager" class = "round2" >
|
< asp:ScriptManager ID = "ScriptManager1" runat = "server" >
|
< asp:UpdatePanel ID = "UpdatePanel1" runat = "server" >
|
商品名称:< asp:TextBox ID = "txtname" runat = "server" ></ asp:TextBox >
|
所属类别:< asp:DropDownList ID = "ddlca" runat = "server" DataSourceID = "ObjectDataSource1"
|
DataTextField = "caName" DataValueField = "categoryId" >
|
商品价格:< asp:TextBox ID = "txtprice" runat = "server" ></ asp:TextBox >
|
作 者:< asp:TextBox ID = "txtauthor" runat = "server" ></ asp:TextBox >
|
出 版 社:< asp:TextBox ID = "txtpublisher" runat = "server" ></ asp:TextBox >
|
商品封面:< asp:FileUpload ID = "fulfengmian" runat = "server" onchange = "PreviewImg(this)" />
|
< img id = "imgfengmian" alt = "" src = "" height = "110px" width = "110px" />
|
商品库存:< asp:TextBox ID = "txtquan" runat = "server" ></ asp:TextBox >
|
商品介绍:< asp:TextBox ID = "txtintro" runat = "server" Columns = "40" Rows = "6" TextMode = "MultiLine" ></ asp:TextBox >
|
< asp:Button ID = "btnadd" runat = "server" Text = "添加" />
|
< input id = "Reset1" type = "reset" value = "重置" />< asp:ObjectDataSource ID = "ObjectDataSource1"
|
runat = "server" SelectMethod = "GetAllCategory" TypeName = "EeconomicBLL.CategoryManager" >
|
firefox里面提供的方法的总结
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />
|
< title >input type=file & Firefox 3</ title >
|
< h1 >input type=file & Firefox 3</ h1 >
|
< script type = "text/javascript" >
|
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"));
|
< input type = "file" name = "my-file" id = "my-file" onchange = "inputFileOnChange();" />
|
fileName :用于获取到用户所选文件的名称,这和直接取value值所得到的结果一样。
fileSize :得到用户所选文件的大小。
getAsBinary() :得到用户所选文件的二进制数据。
getAsDataURL() :得到用户所选文件的路径,该路径被加密了,目前只能在FireFox中使用。
getAsText() :得到用户所选文件的指定字符编码的文本。
ie6中
var file_url = document.getElementById( "file" ).value;
|
ie7.8
var file = document.getElementById( "file" );
|
var file_url = document.selection.createRange().text;
|
分享到:
相关推荐
关于如何从firefox中获取file控件里的实际路径的解决代码
在探讨如何在Firefox 7.0及以上版本中获取图片路径的方法之前,我们首先需要理解一些基本的概念和技术背景。本文将深入解析两种主要方法:利用`getAsDataURL()`和`createObjectURL()`函数,来帮助读者更好地掌握在...
具体代码如下: 代码如下: <html> <head> <title>get file input full path</title> [removed] function getFullPath(obj) { if(obj) { //ie... } //firefox else if(window.navigator.userAge
2. **Firefox浏览器特别处理**:由于Firefox不返回文件的完整路径,文章中提供了`readFileFirefox`函数,这个函数利用了Firefox特有的组件`Components.classes`来创建一个`nsILocalFile`实例。这个实例可以用来获取...
### 解决AjaxFileUpload.js在IE9与Firefox下文件过大导致无效问题 #### 背景介绍 在处理Web前端的文件上传功能时,我们经常会遇到浏览器兼容性问题,尤其是在处理较旧版本浏览器如IE9及Firefox时。本文将详细介绍...
例如,Chrome和Firefox通常能正确处理相对路径,而旧版IE可能需要特殊处理。特别是涉及到URL的相对解析时,例如在使用`src`或`href`属性时,不同浏览器可能有不同的解析逻辑。 4. **文件系统访问权限**: 部分...
在本例中,我们通过编写一段JavaScript代码来解决Firefox浏览器不显示本地图片的问题。首先,我们定义了一个`<img>`标签,这个标签将用于显示图片预览。紧接着,我们编写了一个`<script>`标签,其中包含了一个`file...
3. **预览图片**:对于支持FileReader API的现代浏览器(如Chrome、Firefox、Safari、Edge等),可以使用`FileReader`对象的`readAsDataURL`方法将文件内容转换为Base64编码的URL,然后设置到`<img>`标签的`src`属性...
这种做法的优点在于,它不仅兼容FireFox浏览器,而且支持所有主流浏览器,是一种相对稳妥的清空File控件值的方法。 在文章中,由于OCR扫描识别技术的限制,可能会出现一些字词识别错误或漏识别,开发者在阅读时需要...
在早期版本的Firefox(例如18.0)中,当用户选择文件后,开发者可以通过`input`元素的`files`属性获取到`File`对象,而`File`对象的`name`属性则提供了文件的相对路径。然而,出于安全考虑,现代浏览器(包括Firefox...
2. **利用File对象的name属性**:虽然不能获取完整路径,但可以通过`File`对象的`name`属性获取到文件名,这在某些情况下已经足够了。 3. **使用FormData上传文件**:在需要将文件上传到服务器的情况下,可以创建一...
### Python 模拟 Firefox 浏览器抓取数据 #### 一、准备工作 为了实现用Python模拟Firefox浏览器抓取网页数据的功能,我们需要准备并安装一些必要的工具和库。 ##### 1.1 安装 Selenium Selenium 是一个强大的...
【Firefox技巧应用宝典】是针对Firefox浏览器一系列实用技巧的集合,旨在提升用户在使用Firefox时的效率和体验。以下是对各个技巧的详细说明: 一、启动提速新招 通过在浏览器地址栏输入“about:config”,我们可以...
KindEditor的设计理念是简洁高效,它支持多种浏览器环境,包括Chrome、Firefox、Safari、IE等主流浏览器,这使得它在各种环境下都能保持良好的兼容性和稳定性。其轻量级的特性使得加载速度快,对服务器资源的需求...
然而,由于安全策略的限制,Firefox浏览器默认不允许直接通过JavaScript访问本地文件系统,因此不能直接通过`<img>`标签的`src`属性加载本地文件路径来实现图片预览。这个问题可以通过一些技巧来解决,比如使用`file...
而火狐,即Firefox,是由Mozilla基金会开发的开源浏览器,其内核名为Gecko,它遵循W3C标准,具有良好的跨平台性。 要在Winform应用中使用这两种内核打开网页,开发者通常会借助嵌入式浏览器控件。对于IE内核,微软...
在Firefox浏览器中,`<input type="file">` 这一HTML元素用于创建一个文件上传控件。与其他浏览器不同,Firefox并不直接支持通过CSS的`width`属性来定义该控件的宽度。然而,Firefox确实提供了`size`属性,允许...