<input type="file" id="fi" name="myFile" style="height: 30"/>
<input type="submit" value="提交"/>
</s:form>
ACTION中:
// myFile属性用来封装上传的文件
private File myFile
// myFileContentType属性用来封装上传文件的类型
private String myFileContentType
// myFileFileName属性用来封装上传文件的文件名
private String myFileFileName
方法中:
//设置上传文件目录
String filePath=ServletActionContext.getServletContext().getRealPath("/****")
//基于myFile创建文件输入流
InputStream is=new FileInputStream(myFile)
String a[] = myFileFileName.split("\\.")
System.out.println("上传文件名:"+a[0]+"上传文件类型:"+a[1])
//设置目标文件
File toFile=new File(filePath,“可以自己取"+"."+a[1])
//创建一个输出流
OutputStream os=new FileOutputStream(toFile)
// OutputStream bos = new FileOutputStream(filePath)//建立一个上传文件的输出流
int bytesRead = 0
byte[] buffer = new byte[8192]
while ( (bytesRead = is.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead)//将文件写入服务器
}
问题发生的具体情况能不能具体阐述下?根据我的经验,对于某些浏览器,如果想开始一个下载需要独立d出一个新的窗口 <a target=_blank>或 <form target="_blank">
其次请确认以下几点:
1.该文件是否有读权限
2.是否在header之前有任何的输出,按F12使用调试工具抓包(主流浏览器都有这个功能了ie9,firefox需要firebug,chrome)
SSH2现在开始说明如何在 UNIX 下使用 SSH 连线。此教材谈的是欧洲 SSH Communications Security 公司出版的 SSH2 软体套件,而非 OpenSSH。SSH2 虽然是一个商业组织生产的软体,但仍是开放性的软体。 SSH2 和 OpenSSH 理论上符合一样的协定规格,但是两个不同的程式,请读者留意。
以下,我们用 SSH 代表 SSH2。
首先,请先确定你所使用的主机和要连线的主机都有安装 SSH 2.4.0 以上的版本,如果任何一端没有安装,那麼当然无法使用 SSH 连线。
在本地端 (Local):
下指令
ssh -v
如果你目前使用的主机有安装 SSH,视窗会出现以下的回应:
ssh: SSH Secure Shell x.x.x (non-commercial version) on sparc-sun-solaris2.6
其中 x.x.x 就是 SSH 的版本, 2.4.0 以下的版本虽然可以连线,但可能会有安全上的漏洞。
要是视窗出现类似下面的回应:
OpenSSH_3.4p1 FreeBSD-20020702, SSH protocols 1.5/2.0, OpenSSL 0x0090601f
那表示你目前使用的主机用的是 Opne SSH,那只好请你自己去看说明文件[输入 man ssh ]。
如果视窗出现下面的回应:
ssh: Command not found.
表示这台主机根本没有安装 SSH 或 OpenSSH。
远方主机 (Remote):
下指令
telnet HostName 22
在这里 HostName 指的是远方主机的位址。
如果出现类似下面的回应:
Trying 140.115.25.6...
Connected to 140.115.25.6.
Escape character is '^]'.
SSH-2.0-x.x.x SSH Secure Shell (non-commercial)
表示远方主机安装了 SSH x.x.x 版。
要跳回去,请按 Ctrl+],当提示符号变成 telnet>时下指令 quit 就可以了。
要是出现下面的回应:
Trying 140.115.25.4...
Connected to 140.115.25.4.
Escape character is '^]'.
SSH-1.99-OpenSSH_3.4p1 FreeBSD-20020702
请注意最后一行,这表示远方主机所安装的是 OpenSSH,你恐怕无法用 SSH 和 OpenSSH 互相沟通。跳回去的方法和 SSH 的一样,所以就不重复了。
要是出现下面的回应:
Trying 140.115.26.32...
telnet: Unable to connect to remote host: Connection refused
表示远方主机既没有安装 SSH,也没有安装 OpenSSH。
如果确认没问题,那我们就一步一步来:(以下的说明,请特别注意大小写)
一、制作公钥和私钥
请下指令
ssh-keygen2 name
在此 name 是由使用者自行选择的钥匙名字。输入后,视窗会出现以下回应:
Generating 1024-bit dsa key pair
请等待一段时间,此时程式正在制作钥匙,钥匙完成后会出现下面的讯息:
Key generated.
1024-bit dsa, liyl@wangwei, Wed Jul 17 2002 06:57:08
Passphrase :
程式会要求使用者输入通行码以避免私钥被人盗用。当你输入通行码后,视窗会出现以下回应:
Again :
要求你再输入一次通行码以确认你刚刚并没有打错。最后会出现下面的讯息:
Private key saved to name
Public key saved to name.pub
这段讯息表示程式把私钥用 name 作档名储存起来,把公钥用 name.pub 作为档名储存起来。
二、使用钥匙
钥匙做好以后,放在你自己的目录下的 .ssh2/ 下,然后你要写一个档案,命名为 identification,放在 .ssh2/ 下,把下面这行文字加进去:
IdKey name
name 是你的放私钥的档案的名字。这麼一来钥匙便算是开始启用了。
三、交换公钥
钥匙完成以后,就必须上传到远方主机中自己的目录下的 .ssh2/ 资料夹中,另一方面,你也必须把远方主机的公钥放到自己这边的 .ssh2/ 下。下指令
sftp UserName@HostName
这里 HostName 是远方主机的位址, UserName 则是你自己的帐号。
如果你是第一次用 SSH 的程式登入这一台主机,那麼主机会问你要不要把属於这台主机的钥匙[ HostKey ]记下来,请视情况回答 yes 或 no [回答 y 或 n 是没用的],大部分情况应该都是回答 yes 的。
接著应该会要求你输入帐号的通行码,登入之后, *** 作方式和 ftp 一样,请照之前的说明交换公钥,然后登出回到原来工作的主机。
接著要再编辑另一个档案 authorization,放在 .ssh2/ 下,加入这一行文字:
Key PublicKey.pub
PublicKey.pub 是你从其他地方抓下来的公钥的档名。如此一来,你这边的准备工作就算完成了。以后如果你从其他地方抓了新的公钥,只要再加上同样的文字就可以了。像这样:
Key abc.pub
Key def.pub
Key jklljl.pub
这样表示你从三个不同的远方主机抓到了三个公钥:abc、def、jklljl, SSH 会自行判断什麼时候要用哪支公钥。
四、登入
要使用 ssh 登入,下指令
ssh -l UserName HostName
其中 HostName 是远方主机的位址, UserName 是你的帐号。
如果远方主机中的 .ssh2/authorization 还没有修该的话,程式应该会向你要通行码,此时你的通行码是在加密状态。登入后,同样编辑 authorization,加入
Key PublicKey.pub
这里的 PublicKey.pub 则是你上传到这台主机的公钥的档名。
再来先登出,再用 SSH 登入,如果看到类似下面的讯息:
Passphrase for key "/home/math88/liyl/.ssh2/bgs" with comment "1024-bit dsa, li:
这就代表程式要求你输入私钥的通行码[当然,如果你没有设定通行码,那你就直接登入,不用任何通行码],输入以后,程式就登入远方主机,此时所有在网路上互传的讯息都是加密的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)