『壹』 js動態創建的file控制項,PHP 怎麼獲取上傳的文件
首先,你的file控制項要放到form表單內,其次,每個file控制項的name屬性應該不同。下面是我修改後的:
<html>
</head>
<script language="javascript" type="text/ecmascript">
var x=1;
//======================
//功能:在表單中input file控制項
//參數:parentID---要插入input file控制項的父元素ID
// inputID----input file控制項的ID
//======================
function createInput(parentID,inputFileID){
var parent=$(parentID);//獲取父元素
var div=document.createElement("div");//創建一個div容器用於包含input file
x++;
var divName=inputFileID+x;//隨機div容器的名稱
div.id=divName;
var aElement=document.createElement("input"); //創建input
aElement.name=divName;
aElement.type="file";//設置類型為file
var delBtn=document.createElement("input");//再創建一個用於刪除input file的Button
delBtn.type="button";
delBtn.value="刪除";
delBtn.onclick=function(){ removeInput(parentID,divName)};//為button設置onclick方法
div.appendChild(aElement);//將input file加入div容器
div.appendChild(delBtn);//將刪除按鈕加入div容器
parent.appendChild(div);//將div容器加入父元素
}
//============================
//功能:刪除一個包含input file的div 容器
//參數:parentID---input file控制項的父元素ID
// DelDivID----個包含input file的div 容器ID
//============================
function removeInput(parentID,DelDivID){
var parent=$(parentID);
parent.removeChild($(DelDivID));
}
//通過元素ID獲取文檔中的元素
function $(v){return document.getElementById(v);}
</script>
<body>
<form action="test.php" method="post" enctype="multipart/form-data">
<div align="left" id="div_Pic" style="border:1px solid #CCCCCC">
<input name="PicFile" type="file" id="ShowPicFile">
</div>
<input type="button" onClick="createInput('div_Pic','PicFile')" name="button" id="button" value="+ 繼續添加圖片">
<input type="submit" value="提交">
</body>
</html>
然後php就可以通過遍歷$_FILES來獲得每個上傳的文件。下面的簡單例子只是列出每個文件的原文件名:
<?php
forEach($_FILES as $f){
echo $f["name"]."<br>";
}
?>
『貳』 怎麼獲取JSP表單中file的值
JSP上傳文件使用的開源抄組件UPload,獲得file文件路徑,可以使用如下方法:
String myFilepath=myFile.getFilePath();
獲得該文件的路徑,使用上述方法有一個前提就是必須確保已經上傳成功。
『叄』 jquery 獲取fileupload的完整路徑。給完整的代碼。直接可以用的
1首先是jsp
<button class="btn button uploadAndNext" id="importWhiteBtn" type="button">
<span class="button">提交導入</span>
</button>
2.然後是
$(function(){
var uploadCom = null;
function uploadIt() {
$("#importWhiteBtn").click(function() {
var uploadId = "#" + $(this).attr("id");
var btn = $(this);
uploadCom = new AjaxUpload( uploadId + "" , {
action : "whitePhoneNumber.do?action=importFile",
onSubmit: function(file, ext) {
if ((ext && /^(txt)$/.test(ext))) {
alert("請先下載導入模板readme.txt參考,您上傳的文檔格式不對,請重新選擇!");
return false;
}
$.blockUI({
message:"正在上傳到伺服器...."
})
},
onComplete: function(file, response) {
$.unblockUI();
if(response=="success"){
alert( "導入成功");
$('#whitePhoneList').flexReload();
}else{
alert( "導入失敗,"+response);
}
}
});
});
$(".uploadAndNext").click();
}
uploadIt();
firstClick = false;
})
3.最後是action
public ActionForward importFile(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception{
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
String success = "success";
BufferedReader br=null;
InputStream in=null;
String operator = UserNameUtil.getUserName(request);
String areaCode = whitePhoneManager.getAreaCodeByOperator(operator);
try {
List<FileItem> list = upload.parseRequest(request);
for (int i = 0; i < list.size(); i++) {
FileItem fileItem = list.get(i);
String name = fileItem.getName().substring(
fileItem.getName().lastIndexOf("\\") + 1);
if(fileItem.getSize() > 2097152){//200k
throw new Exception(" 文件大小超過2M");
}
log.debug("upload file name:" + name);
in= fileItem.getInputStream();
br = new BufferedReader(new InputStreamReader(in));
whitePhoneManager.processFile(br,areaCode);
logutil.log_Operation(request, LogUtil.LOG_MODULE_SYSTEMCONFIG,
LogUtil.LOG_EVENT_CREATE, "批量導入簡訊白名單", "filename: "
+ name, "成功",
LogUtil.SUCCESS);
}
} catch (FileUploadException e) {
log.debug("error", e);
success=e.getMessage() ;
} catch (Exception e) {
log.debug("error", e);
success=e.getMessage() ;
}finally{
if(br!=null) try{br.close();}catch(Exception e){log.error("unable to close bufferdreader",e);}
if(in!=null) try{in.close();}catch(Exception e){log.error("unable to close inputstream",e);}
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
response.getWriter().write( success );
return null;
}
}
『肆』 js獲取文件路徑怎麼寫
<script>
$("input[name=fileString]").change(function(){
//varnames=[];
for(vari=0;i<$(this).get(0).files.length;++i){
//names.push($(this).get(0).files[i].name);
//console.log($(this).get(0).files[i].mozFullPath);
//方式一:
varfilePath=$(this).val();
console.log(filePath);
//方式二:
alert($('input[type=file]').val());
}
//console.log(names);
//方式三:
alert($("input[name=fileString]").val());
})
</script>
注意:以上方式取到的都是文件的偽路徑,由於瀏覽器的安全策略,Chrome瀏覽器及內核的瀏覽器是不可能獲取文件在本地的真實路徑的。IE瀏覽器可以通過設置安全級別,能獲取到真實路徑。
『伍』 如何保證JS文件控制項獲取完整路徑
問題:Internet Explorer中,JS無法通過文件(file)控制項獲取到本地目錄完整路徑,返回如「C:\fakepath\...」錯誤。 解決:修改IE設置,工具 -> Internet選項 -> 安全 -> 自定義級別 -> 將文件上載到伺服器時包含本地目錄路徑,改為啟用即可。
『陸』 js文件選擇框,我選好文件後,取不到正確路徑, alert(document.getElementById('filepath').value);
文件路徑:<input type="file" id="filepath"/>
<button onclick="alert(document.getElementById('filepath').value);">查看路徑</button>
每次重選文件後,點擊按鈕查看。應該是沒有問題啊
你是怎麼操作的?
『柒』 在js文件中怎麼獲取自身的路徑
file是一種特殊的input,不能被賦值,也不能被javascript取值,只能隨表單提交,而且隨表單提交的也是file路徑所指向的文件本身。
這是瀏覽器安全原因所限制的,如果可以取值和賦值的話,那麼javascript就可以隨意獲取你電腦上的文件了,這是非常危險的。
經過結合了HTML5提供的新技術FileHeader,成功地在file標簽未作出提交前,分別獲得了文件的:fileName、fileSize、file Last Mod、、、
唯一的缺點就是:未能在IE下通過。
不過,這不是什麼缺點,因為我是在手機端的web開發,這里是andriod和IOS的天下。
『捌』 jsp中 input file選擇文件 怎麼得到文件的路徑啊 瀏覽器是ie8
<script type="text/javascript">
//FX獲取文件路徑方法
function readFileFirefox(fileBrowser) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch (e) {
alert('無法訪問本地文件,由於瀏覽器安全設置。為了克服這一點,請按照下列步驟操作:(1)在地址欄輸入"about:config";(2) 右鍵點擊並選擇 New->Boolean; (3) 輸入"signed.applets.codebase_principal_support" (不含引號)作為一個新的首選項的名稱;(4) 點擊OK並試著重新載入文件');
return;
}
var fileName=fileBrowser.value; //這一步就能得到客戶端完整路徑。下面的是否判斷的太復雜,還有下面得到ie的也很復雜。
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
try {
// Back slashes for windows
file.initWithPath( fileName.replace(/\//g, "\\\\") );
}
catch(e) {
if (e.result!=Components.results.NS_ERROR_FILE_UNRECOGNIZED_PATH) throw e;
alert("File '" + fileName + "' cannot be loaded: relative paths are not allowed. Please provide an absolute path to this file.");
return;
}
if ( file.exists() == false ) {
alert("File '" + fileName + "' not found.");
return;
}
return file.path;
}
//根據不同瀏覽器獲取路徑
function getvl(){
//判斷瀏覽器
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
var file_url="";
if(Sys.ie<="6.0"){
//ie5.5,ie6.0
file_url = document.getElementById("file").value;
}else if(Sys.ie>="7.0"){
//ie7,ie8
var file = document.getElementById("file");
file.select();
file_url = document.selection.createRange().text;
}else if(Sys.firefox){
//fx
//file_url = document.getElementById("file").files[0].getAsDataURL();//獲取的路徑為FF識別的加密字元串
file_url = readFileFirefox(document.getElementById("file"));
}
//alert(file_url);
document.getElementById("text").innerHTML="獲取文件域完整路徑為:"+file_url;
}
</script>
<h1>JS獲取文件域完整路徑的方法,兼容不同瀏覽器</h1>
<div id="text" style="color:#f00;"></div>
<input type="file" id="file" />
<input name="" type="button" value="獲取" onClick="getvl();">