我用php实现上传的难题?

rywln 2002-05-07 12:57:43
平常我都是用<input type="file" ……>来实现上传的,而我现在想实现一个这样的网页。
在一个文件夹中有几个文件(如test1.txt, test2.txt, test3.txt, test4.txt, test5.txt) ,当我选择该文件夹中的任何一个文件后(如test1.text),就会自动的把该文件夹中的其它文件(如test2.txt, test3.txt, test4.txt, test5.txt) 也一起上传。
希望大家给点意见,谢谢。
...全文
26 37 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamkangkang 2002-05-19
  • 打赏
  • 举报
回复
我觉得不太可能,这个不是对客户端的操作吗?
那样的话不就是可以看客户端的所有文件了?
AlexJia2046 2002-05-12
  • 打赏
  • 举报
回复
恩,我想可以的。
做一个循环来对本目录里所有 以text开头的文件(当然要取数字以前的字段来判断),然后呢,就一个一个传上去(在程序中实现一下)。也许可以吧

但是要你自己来写程序哦。
LeeMaRS 2002-05-11
  • 打赏
  • 举报
回复
现在想想,大概简直是没可能的了.
txxm 2002-05-11
  • 打赏
  • 举报
回复
这用PHP没办法的,你可以把一个文件夹打包,再到服务器端解压。这样可以一次上传多个文件。
_Shakespeare 2002-05-10
  • 打赏
  • 举报
回复
问题的关键是要在客户端完成他所想要完成的任务,但是客户端是不能执行解释PHP
代码的。所以,PHP是不行的,要想完成必须用浏览器来完成。但是这好象是被禁止的吧,安全的东西我很菜,不敢说
VIP 2002-05-10
  • 打赏
  • 举报
回复
咳,其实很简单啊。
只要做个类似DOS通配符的机制,然后有程序循环实现文件的上载啊。
peakcn 2002-05-09
  • 打赏
  • 举报
回复
是呀,如何一次上传整个文件夹这个我问题我也想知道解决办法!
rywln 2002-05-09
  • 打赏
  • 举报
回复
由于本人真的很菜,所有有些东西,大家说出我可能不能理解,请大家适当的说具体一点. _Shakespeare(网络骑士用)你说用localhost就解决了,是指什么?

我的主要目的:是要把客户端上的文件,传到服务器上,请大家多多发表意见。
sunblue 2002-05-09
  • 打赏
  • 举报
回复
偶也想知道关于安全性的问题,有大虾吗
dongfangran 2002-05-09
  • 打赏
  • 举报
回复
你可以考虑一下用 ftp 上传。我听人说过这样可以上船一批文件,不过我没式过。
_Shakespeare 2002-05-09
  • 打赏
  • 举报
回复
to rywln 如果你想从客户端完成这个功能的可能性不大,如果是服务器之间的话(工作组也可以,我在宿舍已经实现)我的方法是可以的。但是,客户端是没有办法解释PHP代码的,所以得想其他的办法了。不过,这种问题解决的可能性不大啊。
因为这牵扯到了安全性问题,我很菜,不大懂。不好意思
alexxing 2002-05-09
  • 打赏
  • 举报
回复
哎,我来给rywln泼瓢冷水吧:
本来,有一个可能的方法,就是利用javascript脚本:
<form name=form1 method=post action="upload.php" onsubmit="return doSubmit()">
<input type=file name=files[]>
<input type=file name=files[]>
<input type=submit name=submit1>
...
</form>
<script language=jscript>
function doSubmit()
{
document.all.form1.files[1].value = ReplaceString(document.all.form1.files[0].value, "1", "2");
//ReplaceString()把字符串中的字符1替换成2,函数实现略
return true;
}
</script>
上面的例子可以在用户上传file1.txt的同时上传file2.txt

HTML中的<input type=text/password...>或者<textarea ...>等都支持value属性,可以用js代码设置,实现很多功能

但是,偏偏这个<input type=file...>不支持value属性!
之所以做出这样的特别规定,完全是处于安全的考虑。
否则网站程序的编制者就可以通过把value设置成特定的文件名而把浏览者硬盘上的文件偷偷拷贝到服务器上,从而达到不可告人的目的!这违背了互联网的基本安全原则。

所以,你要求的功能是无法通过浏览器而实现的。只能通过fopen(),fread()直接从客户端拷贝到服务器,而这样做的基本前提是:客户端架设了FTP服务器!

benjamin9 2002-05-09
  • 打赏
  • 举报
回复
关注,我也想知道方法
rywln 2002-05-08
  • 打赏
  • 举报
回复
Shakespeare(网络骑士):php不是在服务器上运行的吗?可以操作本地机吗?如果不可以,就算用文件列表的函数不是显示服务器上吗?
_Shakespeare 2002-05-08
  • 打赏
  • 举报
回复
恩,是
不过 这只是一个建议啊,你可以用其他的函数来实现
因为我自己做过用FTP实现的东西,所以这么举一个例子
可以参考PHP手册上的显示文件列表的函数来解决
试试吧
www.pcbookcn.com有很好的教材
或者ftp://ftp.math.sdu.edu.cn/incoming/PHP4程序员参考手册
很不错
rywln 2002-05-08
  • 打赏
  • 举报
回复
你这样用ftp的方法是不是一定要一个ftp的服务器呢?
LeeMaRS 2002-05-08
  • 打赏
  • 举报
回复
嗯.是的.
我手上的资料都太旧了,哎,英文不好,新的资料又都是英文的.

在PHP4.03以上的版本,就不推荐用copy了,推荐使用is_uploaded_file()和move_uploaded_file().

使用is_uploaded_file()判断文件是否是由HTTP POST上传的.
使用move_uploaded_file()来完成复制工作.使用方法同copy().
_Shakespeare 2002-05-08
  • 打赏
  • 举报
回复
我的建议,打个比方FTP上传
你可以,先取得当前文件夹的路径
$ftp_stream=@ ftp_connect($ftp_server,21);
$login=@ ftp_login($ftp_stream,"$user","$userpasswd");
判断一下
$this=ftp_pwd($ftp_stream);
//然后用$dir获得你选种的文件夹的路径
$this=$this.$dir;
$result=ftp_nlist($ftp_stream,$this);
for ($=0;$<count($result);$++)
{
$result.$i=$result[i];
}
然后再用隐藏变量的形式把$result.$i传给你想要完成上传的网页
试试看啊



wasy 2002-05-08
  • 打赏
  • 举报
回复
zyme(骇虫)
兄弟何不拿出來共享呢?
rywln 2002-05-08
  • 打赏
  • 举报
回复
zyme(骇虫):不好意思,我加你不上,如果可以你可以加我16358534,
或发Em@il给我,rywln@sina.com
加载更多回复(17)

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧