<input type="file" name="theFile"> 两个页面付值提交的问题(50分)

  • 主题发起人 主题发起人 wwyangg
  • 开始时间 开始时间
W

wwyangg

Unregistered / Unconfirmed
GUEST, unregistred user!
一个是主页面.一个是小页面. 小页面是用来.用户选择文件和输入文件名的.按确定,返回小页面的.值付给主页面相同<input type="file" name="theFile"> 隐藏对像.并在主页面上提交!请问如何来实现.我试过好多方法,就是不行,当然,前提是我要在主页面上提交FORM
 
这要做客户端脚本。与JSP或Servlet没什么关系。
 

问题简化为:
给<input type="file" name="theFile">通过javascript脚本动态赋值,比如将c:/test.txt赋于文件控件,并能提交。
 
file 类型的控件不能通过赋值解决,只能是
在webbrowse 控件的ondocumentcomplete 事件中写入如下代码:
procedure Trestorefm.onducumentcomplete(Sender: TObject;
const pDisp: IDispatch;
var URL: OleVariant);
var
i:integer;
o : Olevariant;
CurrentFile:string;
BrowserHwnd:HWnd;
begin
if WebBrowser1.LocationURL = 'http://oa.hskj.net:8888/upload.php' then
//思是只有加载'http://oa.hskj.net:8888/upload.php' 才执行下面代码
begin
o := WebBrowser1.OleObject.document.all.item('upload_file',0);
//找到登录用户名的输入框
CurrentFile := 'c:/1.jpg';
SetForegroundWindow(restorefm.Handle);
for i:=1 to Length(CurrentFile)do
begin
o.focus;
BrowserHwnd := GetWindow(Webbrowser1.Handle,GW_CHILD);
SendMessage(GetWindow(BrowserHwnd,GW_CHILD),WM_CHAR,ord(CurrentFile),$00200001);
end;
o:= WebBrowser1.oleobject.document.Forms.Item(0, 0).submit;
//WebBrowser1.LocationURL:= 'http://oa.hskj.net:8888/';上传后转到另一页,否则将不停地提交
webbrowser1.Navigate('http://oa.hskj.net');
end;
end;

//这是我的upload.php原代码:
html><head>
<title>上载文件表单</title></head>
<body>
<form action="" method="post" enctype="multipart/form-data" name="wjq" id="wjq">
请选择文件: <br>
<input name="upload_file" type="file" id="upload_file">
<br>
<input name=".upload" type="submit" id=".upload" value="上传文件">
</form>
</body>
</html>
<?
$upload_file=$_FILES['upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file']['name'];
if($upload_file){
$file_size_max = 10000*1000;// 1M限制文件上传最大容量(bytes)
$store_dir = "upload/";// 上传文件的储存位置
$accept_overwrite = 1;//是否允许覆盖相同文件
// 检查文件大小
if ($upload_file_size > $file_size_max) {
echo "对不起,你的文件容量大于规定";
exit;
}
// 检查读写文件
if (file_exists($store_dir . $upload_file_name) &amp;&amp;
!$accept_overwrite) {
Echo "存在相同文件名的文件";
exit;
}
//复制文件到指定目录
if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
echo "复制文件失败";
exit;
}
}
Echo "<p>你上传了文件:";
echo $_FILES['upload_file']['name'];
echo "<br>";
//客户端机器文件的原名称。
Echo "文件的 MIME 类型为:";
echo $_FILES['upload_file']['type'];
//文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
echo "<br>";
Echo "上传文件大小:";
echo $_FILES['upload_file']['size'];
//已上传文件的大小,单位为字节。
echo "<br>";
Echo "文件上传后被临时储存为:";
echo $_FILES['upload_file']['tmp_name'];
//文件被上传后在服务端储存的临时文件名。
echo "<br>";

$Erroe=$_FILES['upload_file']['error'];
switch($Erroe){
case 0:
Echo "上传成功";
break;
case 1:
Echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值.";
break;
case 2:
Echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";
break;
case 3:
Echo "文件只有部分被上传";break;
case 4:
Echo "没有文件被上传";break;
}
?>
 
完全不可能的,假如允许这样操作的话,
还有什么安全性可言???
你看看相关资料就明白了.
 
多谢各位
 
后退
顶部