如何上传文件到Linux云服务器

如何上传文件到Linux云服务器,第1张

Step1 在云服务器配置FTP服务
1在root权限下,通过如下命令安装Vsftp。
[root@VM_250_202_tlinux ~]# yum install vsftpd
2在启动vsftpd服务之前,需要登录云服务器修改配置文件,将匿名登录禁用掉。打开配置文件,命令如下:
[root@VM_250_202_tlinux ~]# vim /etc/vsftpd/vsftpdconf
在配置文件中第11行的“anonymous_enable=YES”前面加上#号,即将匿名登录禁用。
3读取生效配置。
[root@VM_250_202_tlinux ~]# cat /etc/vsftpd/vsftpdconf |grep ^[^#] local_enable=YESwrite_enable=YESlocal_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES
4启动vsftpd服务。
[root@VM_250_202_tlinux ~]# service vsftpd start
5设置FTP用户账号。设置成功后,即可通过该账号登录FTP服务器。(1)设置FTP用户的账号,例如账号为“ftpuser1”,目录为/home/ftpuser1,且设置不允许通过ssh登录。
[root@VM_250_202_tlinux ~]# useradd -m -d /home/ftpuser1 -s /sbin/nologin ftpuser1
(2)设置账号对应的密码,例如密码为“ftpuser1”。
[root@VM_250_202_tlinux ~]# passwd ftpuser1
6修改vsftpd的pam配置,使开发者可以通过自己设置的FTP用户帐号和密码连接到云服务器。(1)修改pam。
[root@VM_250_202_tlinux ~]# vim /etc/pamd/vsftpd
内容修改为:
#%PAM-10 auth required /lib64/security/pam_listfileso item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib64/security/pam_unixso shadow nullok auth required /lib64/security/pam_shellsso account required /lib64/security/pam_unixso session required /lib64/security/pam_unixso
(2)确认修改后的文件是否正确。
[root@VM_250_202_tlinux ~]# cat /etc/pamd/vsftpd#%PAM-10 auth required /lib64/security/pam_listfileso item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib64/security/pam_unixso shadow nullok auth required /lib64/security/pam_shellsso account required /lib64/security/pam_unixso session required /lib64/security/pam_unixso
(3)重启vsftpd服务,使修改生效。
[root@VM_250_202_tlinux ~]# service vsftpd restartShutting down vsftpd: [ OK ]Starting vsftpd for vsftpd: [ OK ]
Step2 上传文件到Linux云服务器
1下载并安装开源软件FileZilla请使用FileZilla的351、352版本(使用353版本的FileZilla进行FTP上传会有问题)。由于FileZilla 官网上只提供了最新的353版本下载,因此建议开发者自行搜索351、352下载地址。建议的351 下载地址:>使用一些已有的组件帮助我们实现这种上传功能。
常用的上传组件:
Apache 的 Commons FileUpload
JavaZoom的UploadBean
jspSmartUpload
以下,以FileUpload为例讲解
1、在jsp端
<form id="form1" name="form1" method="post" action="servlet/fileServlet" enctype="multipart/form-data">
要注意enctype="multipart/form-data"
然后只需要放置一个file控件,并执行submit *** 作即可
<input name="file" type="file" size="20" >
<input type="submit" name="submit" value="提交" >
2、web端
核心代码如下:
public void doPost(>环境准备

1. 下载并安装Tomcat(已经有很多关于Tomcat安装以及使用的文章,在这里不再介绍);

2. 下载File upload的jar包commons-fileupload-10-beta-1jar,并将该文件拷贝到{$TOMCAT}/common/lib目录下(其中{$TOMCAT}为Tomcat的安装目录);

3. 由于Fileupload子项目同时要用到另外一个项目commons-Beanutils,所以必须下载Beanutils,并将解压后的文件commons-beanutilsjar拷贝到{$TOMCAT}/common/lib目录下。

开发文件上传页面

文件上传的界面如图1所示。为了增加效率我们设计了三个文件域,同时上传三个文件。
图1 文件上传界面

页面的HTML代码如下:
<html>
<head>
<title>文件上传演示</title>
</head>
<body bgcolor=“#FFFFFF”text=“#000000” leftmargin=“0”topmargin=“40”marginwidth=“0” marginheight=“0”>
<center>
<h1>文件上传演示</h1>
<form name=“uploadform”method=“POST” action=“savejsp”ENCTYPE=“multipart/form-data”>
<table border=“1”width=“450”cellpadding=“4” cellspacing=“2”bordercolor=“#9BD7FF”>
<tr><td width=“100%”colspan=“2”>
文件1:<input name=“file1”size=“40”type=“file”>
</td></tr>
<tr><td width=“100%”colspan=“2”>
文件2:<input name=“file2”size=“40”type=“file”>
</td></tr>
<tr><td width=“100%”colspan=“2”>
文件3:<input name=“file3”size=“40”type=“file”>
</td></tr>
</table>
<br/><br/>
<table>
<tr><td align=“center”><input name=“upload” type=“submit”value=“开始上传”/></td></tr>
</table>
</form>
</center>
</body>
</html>
代码中要特别注意的是黑体处。必须保证表单的ENCTYPE属性值为multipart/form-data,这样浏览器才能正确执行上传文件的 *** 作。

处理上传文件信息

由于本文主要是讲述如何使用Commons-fileupload,所以为了便于修改、调试,上传文件的保存使用一个JSP文件来进行处理。我们将浏览器上传来的所有文件保存在一个指定目录下并在页面上显示所有上传文件的详细信息。保存页面处理结果见图2所示。
图2 保存页面

下面来看看savejsp的代码:
<%
/
演示文件上传的处理
@author <a href=“mailto:winterlau@163com”>Winter Lau</a>
@version $Id: savejsp,v 100 2003/03/01 10:10:15
/
%>
<%@ page language=“java”contentType=“text/html;charset=GBK”%>
<%@ page import=“javautil”%>
<%@ page import=“orgapachecommonsfileupload”%>
<html>
<head>
<title>保存上传文件</title>
</head>
<%
String msg = “”;
FileUpload fu = new FileUpload();
// 设置允许用户上传文件大小,单位:字节
fusetSizeMax(10000000);
// maximum size that will be stored in memory
// 设置最多只允许在内存中存储的数据,单位:字节
fusetSizeThreshold(4096);
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fusetRepositoryPath(“C:\\TEMP”);
//开始读取上传信息
List fileItems = fuparseRequest(request);
%>
<body bgcolor=“#FFFFFF”text=“#000000” leftmargin=“0”topmargin=“40”marginwidth=“0” marginheight=“0”>
<font size=“6”color=“blue”>文件列表:</font>
<center>
<table cellpadding=0 cellspacing=1 border=1 width=“100%”>
<tr>
<td bgcolor=“#008080”>文件名</td>
<td bgcolor=“#008080”>大小</td>
</tr>
<%
// 依次处理每个上传的文件
Iterator iter = fileItemsiterator();
while (iterhasNext()) {
FileItem item = (FileItem) iternext();
//忽略其他不是文件域的所有表单信息
if (!itemisFormField()) {
String name = itemgetName();
long size = itemgetSize();
if((name==null||nameequals(“”)) && size==0)
continue;
%>
<tr>
<td><%=itemgetName()%></td>
<td><%=itemgetSize()%></td>
</tr>
<%
//保存上传的文件到指定的目录
name = namereplace(‘:’,‘_’);
name = namereplace(‘\\’,‘_’);
itemwrite(“F:\\”+ name);
}
}
%>
</table>
<br/><br/>
<a href=“uploadhtml”>返回上传页面</a>
</center>
</body>
</html>
在这个文件中需要注意的是FileUpload对象的一些参数值的意义,如下面代码所示的三个参数sizeMax、sizeThreshold、repositoryPath:
FileUpload fu = new FileUpload();
// 设置允许用户上传文件大小,单位:字节
fusetSizeMax(10000000);
// maximum size that will be stored in memory
// 设置最多只允许在内存中存储的数据,单位:字节
fusetSizeThreshold(4096);
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fusetRepositoryPath(“C:\\TEMP”);
这3个参数的意义分别为:

SizeMax 用来设置上传文件大小的最大值,一旦用户上传的文件大小超过该值时将会抛出一个FileUploadException异常,提示文件太大;

SizeThreshold 设置内存中缓冲区的大小,一旦文件的大小超过该值的时候,程序会自动将其它数据存放在repositoryPath指定的目录下作为缓冲。合理设置该参数的值可以保证服务器稳定高效的运行;

RepositoryPath 指定缓冲区目录。

使用注意事项
从实际应用的结果来看该模块能够稳定高效的工作。其中参数SizeThreshold的值至关重要,设置太大会占用过多的内存,设置太小会频繁使用硬盘作为缓冲以致牺牲性能。因此,设置该值时要根据用户上传文件大小分布情况来设定。例如大部分文件大小集中在100KB左右,则可以使用100KB作为该参数的值,当然了再大就不合适了。使用commons-fileupload来处理>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/10610341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存