如何将一个TXT文档里内容导入到文本框里
发布网友
发布时间:2022-04-20 22:43
我来回答
共1个回答
热心网友
时间:2022-04-21 00:12
今天看到你再次提这个问题,极度郁闷,之前我给出了两种解决方案,一种是运用纯ASP(FSO)来完成,此法不受浏览器的安全级别*;第二种是采用纯JS的方法来完成,但是受浏览器的安全级别*。
现在我再给一种新的解决方案,就是采用ASP+JS(AJAX异步提交和获取不刷新页面)的方式来完成你想要的效果(分两个文件,一个是ajax_txt.asp,另一个是ajax_txt_save.asp),此法不受浏览器的安全级别*,希望你能满意,具体代码如下:
第一个文件ajax_txt.asp的代码:
(此页是AJAX异步提交txt文本文件的路径到ajax_txt_save.asp页面,并从ajax_txt_save.asp获取返回的数据)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
body,td,th {
font-size: 12px;
}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>
<script type="text/javascript">
<!--
//将用户输入异步提交到服务器
function ajaxSubmit(){
//获取文件浏览控件中选择的文件路径
var filesname=document.form1.FileName.value;
if (filesname=="")
{
alert("请先选择要导入的txt文件!");
document.form1.FileName.focus();
return false;
}
//创建XMLHttpRequest对象
var xmlhttp;
try{
xmlhttp=new XMLHttpRequest();
}catch(e){
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//创建请求结果处理程序
xmlhttp.onreadystatechange=function(){
if (4==xmlhttp.readyState){
if (200==xmlhttp.status){
var dates=xmlhttp.responseText; //接收服务端返回的数据
var alldataarr;
if (dates=="null") {
alert('内容获取失败!');
} else {
alert('已成功获取到txt文本文件中的内容!');
alldataarr = dates.split(",");
document.form1.textarea1.value = alldataarr[0];
document.getElementById('num').innerHTML = alldataarr[1];
//清空上传域file
document.getElementById('FileName').select();
document.selection.clear();
}
}else{
alert("error");
}
}
}
//打开连接,true表示异步提交
xmlhttp.open("post", "ajax_txt_save.asp", true);
//当方法为post时需要如下设置http头
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
//发送数据
xmlhttp.send("filesname="+escape(filesname));
}
//-->
</script>
</head>
<body>
<div align="center">
<br><font color="#009900" size="3"><b>JS读取文本文件的内容并赋值给textarea控件</b></font><br><br>
<form id="form1" name="form1" action="index.asp?Action=Write" method="post">
<input type="file" id="FileName" name="FileName" size="30">
<input type="button" name="button1" value="导入" onclick="ajaxSubmit();"><br><br>
<textarea id="textarea1" name="textarea1" cols="46" rows="20"></textarea> <br><br>
已导入:<font color="#FF0000"><span id="num">0</span></font> 条记录<br><br><br>
<input type="submit" name="Submit1" value="提交导入的内容到数据库">
</form>
</div>
</body>
</html>
第二个文件ajax_txt_save.asp的代码:
(此页是用ASP中的FSO来读取txt文本文件中的内容并输出,为ajax_txt.asp这个页面的AJAX异步获取提供数据)
<%
'//禁止缓存该页 让AJAX读取该页始终为最新而非过期缓存页
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
response.Charset="GB2312" '//数据返回的编码类型 显示中文数据必须
Dim objFSO
Dim objText
Dim ObjFile
Dim strTextContent
Dim objDrive
'创建一个文件操作对象实例
Set objFSO = CreateObject("Scripting.FileSystemObject")
'要打开的文件
ObjFile=trim(request("filesname")) '从文浏览控件中获取
IF objFSO.FileExists(ObjFile) then
Set objText = objFSO.OpenTextFile(ObjFile,1)
'循环读取数据
k=0
While not objText.AtEndOfStream '到文件的末尾
strTextContent = strTextContent & objText.ReadLine() & vbcrlf
k=k+1
wend
objText.Close
response.write strTextContent & "," & k
else
strTextContent= "文件不存在"
response.end()
end if
%>
以上代码经测试,100%能使用,且不受浏览器的安全级别*,祝你好运!