版主、各位大侠,小弟在此求教了!我为了实现客户端导入功能,写了一个jsp页面用来form提交要导入的文件到服务器端,但在后台取读取不到文件的内容。请赐教!!!!
jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
String contextPath = request.getContextPath();
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>文件上传</title> <script language="javascript"
src="<%=basePath%>/pms/platform/pms.js"></script>
<script type="text/javascript"
src="<%=basePath%>common/ext/ext-base.js"></script>
<script type="text/javascript"
src="<%=basePath%>common/ext/ext-all.js"></script>
<script type="text/javascript"
src="<%=basePath%>common/ext/ext-lang-zh_CN.js"></script>
<link rel="stylesheet" type="text/css"
href="<%=basePath%>common/ext/resources/css/ext-all.css" />
<script language="javascript"
src="<%=basePath%>/common/fileUpload/fileUploadAction.js"></script>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style type="text/css">
#jtxt{
color:#666666;
font-size:12px;
}
</style> <script type="text/javascript">
var pbar1; //定义一个变量用于进度条对象
var btn1; //定义一个变量用于进按钮对象

Ext.onReady(function(){
pbar1=new Ext.ProgressBar({ //实例化进度条
renderTo:"div1", //进度条呈现的一个DIV
width:350, //进度条的宽度
text:"上传进度..." //在进度条里的初始文本
});
//btn1=Ext.get("btnUpload"); //按钮对象
//btn1.on("click",isnull); //按钮事件,单击时调用f1()函数
//隐藏进度条
document.getElementById("div1").style.display='none';
});
var items = ["file","btnUpload","btnReset"];
function isnull(){
var file = document.getElementById("file").value;
if(file==null || file==""){
alert("请选择上传的文件!");
return ;
}
document.getElementById("div1").style.display='';
f1();
}
function f1(){
//实际文件没有上传完成效果
if(document.getElementById("hd").value==96){
document.getElementById("hd").value=95;
}
var i = document.getElementById("hd").value++;//取得当前进度和设置进度

pbar1.updateProgress(i/100.0); //让进度条更新到指定的进度。这个值是0-1之间的数,我让i/100.0,以让它的结果是一个小数
pbar1.updateText("进度:"+i+"%"); //进度条显示的文本
//当i==100的时候让按钮状态可以使用,并让i=1,再让进度条停止
if(i==100){
//设置相应元件可编辑
_setDisabled(items,false);
//设置初始进度为0
document.getElementById("hd").value=0;
try{
clearInterval(x);
}catch(e){
return ;
}
}
//设置相应元件状态为不可用
_setDisabled(items,true);
setTimeout("f1()",1);//用setTimeout函数递归调用f1()函数,以达到进度条一直跑的效果
}
/**
*用于设置一些元件是否可编辑
*/
function _setDisabled(items,isTrue){
for(var i=0;i<items.length;i++){
document.getElementById(items[i]).disabled=isTrue;
}
}

/* 
*动态结束进度条,使其完成度为100%
*/
_closeProgress = function ()
{
document.getElementById("hd").value=99;
//f1();
}
//隐藏进度条
_displayNone = function ()
{
document.getElementById("div1").style.display='none';
document.getElementById("file").value = "";
}

/*
 * 导入操作
 */
function OperExport()
{
if (_isExporting)
{
alert("正在导入过程中,请稍候再操作...");
return;
}

var flowid = GetUrlQuery("flowid");
var patternid = GetUrlQuery("patternid");
var formworkname = GetUrlQuery("formworkname");
var startrownum = GetUrlQuery("startrownum");
var flag = GetUrlQuery("flag");

var list = parent.defaultForm.getCellsByType("EditGrid")[0];
var fileObj = document.getElementById("file");
var file = fileObj.value;
if(file != "")
{
var option = confirm("确定导入文件 " + file + " ?");
if(option)
{debugger;
//file = file.replace("\", "\\");
isnull();//启动进度条
mainform = document.getElementById("myform");
       mainform.action = parent.$appRoot+ "/servlet/com.sdjxd.pms.platform.serviceBreak.Invoke?_sender=page&_c=zyws.TJGLMethod&_m=impExcelData&_p0=\""+flowid+"\"&_p1=\""+patternid+"\"&_p2=\""+formworkname+"\"&_p3=\""+startrownum+"\"&_p4="+JSON.stringify(parent._fileExParam)+"&_p5=\""+file+"\"&_p6=\""+flag+"\"";
mainform.submit();
_isExporting = true;
}
}
else
{
alert("请先选择文件!");
}
}

/*
 * 重置文件选择内容
 */
resetFileObj = function ()
{
var file = document.getElementById("file");
file.value = "";
}
//控制上传文件格式
    var fileFormat = function(){
var file = document.getElementById("file").value;
if(file==null || file==""){
return ;
}
//截取扩展名并转换为小写
var str = file.substring((file.length-4),file.length).toLowerCase();
if(str==null || str != ".xls" && str != "xlsx"){
document.getElementById("myform").reset();
alert("请上传正确的电子表格文件!");
return ;
}
}
/* 
 * 回调函数
 */
var impResultBack = function (result, sMsg)
{
_isExporting = false;
_closeProgress();//结束进度条
setTimeout("sleep('"+sMsg+"')",1000);
}
//暂停1秒执行函数,使上传进度效果更好
var sleep = function(sMsg){
var list = parent.defaultForm.getCellsByType("EditGrid")[0];
alert(sMsg)
    _displayNone();//隐藏进度条
    if (parent._fileUploadWin)
parent._fileUploadWin.hide();
list.refresh();
}
</script>
</head> <body
style="font-size:12px; width:100%; margin:0px; border-width:0px; overflow:auto; text-align:center; ; background-color:#E4EEEF;">
<br>
<input id="hd" type="hidden" value="0">
<div id="div1"></div>
<iframe name="upload_iframe" id="upload_iframe" style="width: 400px; height: 100px;display:none" src="about:blank"></iframe>
<form id="myform" name="myform" target="upload_iframe" enctype="multipart/form-data"
action="" method="post">
<p>
&nbsp;
</p>
<table width="413">
<tr>
<td width="60" align="right"
style="word-break:keep-all;white-space:nowrap;">
<span id="jtxt">文件名:&nbsp;</span>
</td>
<td width="353" align="left">
<input name="file" type="file" id="file"
style="border:1px solid #92C1ED; background-color:#FFF;"
onkeydown="return false;" size="40" height="39px"
onpaste="return false;" onchange="fileFormat();"/>
</td>
</tr>
<tr>
<td width="60">
&nbsp;
</td>
<td width="353">
&nbsp;
</td>
</tr>
<tr>
<td width="60">
&nbsp;
</td>
<td align="right" width="353">
<input id="btnUpload" type="button"
onclick="OperExport();"
style="border:1px solid #92C1ED;" value="上&nbsp;传" />
<input id="btnReset" type="reset" onclick="resetFileObj();"
style="border:1px solid #92C1ED;" value="重&nbsp;置" />
&nbsp;&nbsp;
</td>
</tr>
</table>
</form>
</body>
</html>

解决方案 »

  1.   

    form中的action属性的值呢?action中要写请求名的。
    <form id="myform" name="myform" target="upload_iframe" enctype="multipart/form-data"
                action="" method="post">
      

  2.   


    谢谢你的回复!action这里没设置,在按钮调用js方法中设置的。
    mainform = document.getElementById("myform");
                      mainform.action = parent.$appRoot+ "/servlet/com.sdjxd.pms.platform.serviceBreak.Invoke?_sender=page&_c=zyws.TJGLMethod&_m=impExcelData&_p0=\""+flowid+"\"&_p1=\""+patternid+"\"&_p2=\""+formworkname+"\"&_p3=\""+startrownum+"\"&_p4="+JSON.stringify(parent._fileExParam)+"&_p5=\""+file+"\"&_p6=\""+flag+"\"";
                    mainform.submit();
      

  3.   

    这么多JS··我也不熟悉··你如果也不熟悉··那就别用那么多JS··