使用bash-shell cgi获取整个文件路径或上传文件



我想获取select文件的文件路径,但根据浏览器本身的安全性,无法读取文件路径
例如,firefox只读取文件名(ex-test.txt)。
考虑到这一点,我该如何读取bash shell脚本中选择的文件按钮的文件路径
我需要文件路径的原因是我想将文件上传到服务器,所以我想使用命令cp来完成,比如:

cp filepath(and filename) serverpath

我可以用简单的按钮(type=button而不是type=file)用特殊的方法(用type=text来完成这个技巧)吗
我尝试的原始代码是:

#!/bin/sh
#=================================================
#   PATH defination
# ================================================

#=================================================
#   Main
# ================================================
echo "Content-type: text/html"
echo "Pragma: no-cache"
echo ""
echo "<HTML><HEAD>"
echo "<meta http-equiv=content-type content=text/html; charset=UTF-8>"
echo "<TITLE>$msg010</TITLE>"
. ${WWW_SCRIPTS_LIB_PATH}/style-init.sh
echo "</HEAD>"
echo "<BODY>"
ShowSubLogo "$msg010"
if [ "$CONTENT_LENGTH" != "" ]; then
read data
filesplit1=`echo $data | awk -F'&' '{print $1}'`
if [ "$filesplit1" != "fileis=" ]; then
filename=`echo $filesplit1 | sed "s/%20/ /g" | cut -f 2 -d "="`
fi
fi
echo "<br> </br>"
echo "<br> </br>"
echo "$msg050"
echo "<br> </br>"
echo "<form name=Updfw_form method=post action=EippsUpdate.cgi>"
echo "$msg020"
echo "<input name='fileis' id='UpLoad' type='file'>"
echo "<br> </br>"
echo "<input name='update' value='$msg030' class=bton_over value="$com010" type='submit' onmouseover="this.className='bton_out'" onmouseout="this.className='bton_over'">"
echo "<input name='cancel' value='$msg040' class=bton_over value="$com010" type='reset' onmouseover="this.className='bton_out'" onmouseout="this.className='bton_over'">"
echo "</form>"
echo "</BODY></HTML>"

它只是读取文件名,在chrome浏览器中,它无法工作。

或者,是否有其他方法可以将文件上传到用户可以选择的服务器?我搜索了bash shell版本的示例,但很少查看。

只是整个文件路径!或者将文件上传到浏览器!

请回答。

不,没有。IE告诉你是错误的。虽然我真的不确定如何滥用它,但我很有信心这是一个安全问题。

您必须添加另一个输入字段,用户将在其中填写文件应存储在服务器上的路径。

老实说,对于由人工操作的web应用程序(而不是由特定客户端程序调用的web服务),我看不出客户端上的路径和服务器上的路径有任何共同点的原因。通过提供单独的输入字段,用户可以自由地将文件放置在本地机器上他们想要的任何位置。

如果它们实际上必须是相同的,那么可能有一些常见的应用程序,您可以将执行上传的脚本(可能通过一些更合适的协议,如ssh,调用接收脚本或使用scp或sftp)与适当的路径捆绑在一起。

顺便说一句,shell不太适合CGI编程,因为它使用了特殊字符,很难正确保护。

最新更新