请教:有没有什么比较好的方法,可以实现一个文件同时上传到多个服务器? 有没有什么比较好的解决方法?谢谢了:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用其中的一个server来响应文件的上传,然后在这个server里面写一个dispatcher,再把这个文件上传到其他的server里面。 我的解决方法是这样的,供各位有需要的参考,也请高手批评指正,共同进步:在jsp页面中采用smartUpload进行上传,本来我是指望smartUpload一次上传到多台服务器的,可是几台服务器都是linux环境,用smartUpload可以上传到本地机器,可是我不知道怎么用smartUpload上传到网络中另外一台linux,于是想到了采用FTP上传,先由smartUpload上传到本地服务器,紧接着,再FTP上传到别的服务器:<%@ page language="java" import="com.jspsmart.upload.*" import="java.text.*,java.util.*,java.io.*,org.apache.commons.net.ftp.*"%><jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload"/><%@ page contentType="text/html;charset=gb2312"%><%//@ page language="java" import="com.jspsmart.upload.*"%> <%request.setCharacterEncoding("GB2312");//定义目标目录//定义目标目录String context = "/pic/";//本地服务器的存放地址//String context = picConfigBean.getNewsPicPath();//String destination="images\\";mySmartUpload.initialize(pageContext);//文件上传mySmartUpload.upload();String image_hx = "";com.jspsmart.upload.File myFile_hx = mySmartUpload.getFiles().getFile(0);if(!myFile_hx.isMissing()){ image_hx = myFile_hx.getFileName(); String prefix_hx = image_hx.substring(image_hx.lastIndexOf(".") + 1, image_hx.length()); if(prefix_hx.equals("jpg")||prefix_hx.equals("jpeg")||prefix_hx.equals("JPG")||prefix_hx.equals("JPEG")||prefix_hx.equals("bmp")||prefix_hx.equals("BMP")||prefix_hx.equals("png")||prefix_hx.equals("PNG")||prefix_hx.equals("GIF")||prefix_hx.equals("gif")) { java.io.File fl = new java.io.File(context + image_hx); if (fl.exists()) { /*Random random = new Random(); String s1 = Integer.toString(random.nextInt(9)) + Integer.toString(random.nextInt(9)) + Integer.toString(random.nextInt(9)) + Integer.toString(random.nextInt(9)); s1 += image_hx; image_hx = s1;*/ myFile_hx.saveAs(context + image_hx); } myFile_hx.saveAs(context + image_hx); }} //以下为FTP上传 int i=0; int Size=0; String FileExt="",suffix="",name1="",newname="",Fnewname=""; String ftpHostname="XXX.XX.X.XXX"; //ftp主机IP地址 String ftpUser="userName"; //用户名 String ftpPwd="psw"; //密码 String ftpDir="/home/benz/"; //ftp目录 FTPClient ftp=new FTPClient();try { ftp.connect(ftpHostname); ftp.login(ftpUser,ftpPwd); ftp.changeWorkingDirectory(ftpDir); ftp.setFileType(ftp.BINARY_FILE_TYPE); //以BINARY格式传送文件 Fnewname=context+image_hx; //这里需要给出的是文件所在本地机器的根目录路径 FileInputStream f_in=new FileInputStream(Fnewname); ftp.storeFile(image_hx,f_in); //存储文件到ftp的/file目录中。 out.print("successful"); f_in.close(); ftp.logout(); } catch(Exception e) { e.printStackTrace(); }%>需要用到commons-net的jar包,在apache的网站上就可以下载得到PS:我有2个地方需要用到上传,一个是在页面中用sartUpload上传,另外一个是在fckeditor中插入图片,flash时,同时要上传到别的服务器,这种情况下,我就修改了com.fredck.FCKeditor.uploader.SimpleUploaderServlet,这个在这里就不赘述了,一样的,将那段ftp的代码直接copy进去就好了 子类向上转型后如何调用父类方法 大家看看双缓冲为什么不能显示?我输出画布大小得到的是0。 看java多线程和定时器,有些疑惑,望朋友们指教,谢谢。 为什么一个.java文件里面只能有一个public? 如何在JSP页面显示Excel中图表 求一java写的黑白棋程序 关于从数据库提取记录!(急) 请问中jtable如何设成只读,不让用户修改 字符串按固定格式输出问题请教 我使Jsequence遇到如下错误(我不熟悉JAR,可能是运行JAR的错误),麻烦各位看一下,在线等,(帮我搞定的另外送100分) 求助:如何比较两个文件夹是否一致? JAVA <> SQL <> XML
在jsp页面中采用smartUpload进行上传,本来我是指望smartUpload一次上传到多台服务器的,可是几台服务器都是linux环境,用smartUpload可以上传到本地机器,可是我不知道怎么用smartUpload上传到网络中另外一台linux,于是想到了采用FTP上传,先由smartUpload上传到本地服务器,紧接着,再FTP上传到别的服务器:<%@ page language="java" import="com.jspsmart.upload.*" import="java.text.*,java.util.*,java.io.*,org.apache.commons.net.ftp.*"%>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload"/>
<%@ page contentType="text/html;charset=gb2312"%>
<%//@ page language="java" import="com.jspsmart.upload.*"%> <%
request.setCharacterEncoding("GB2312");
//定义目标目录
//定义目标目录
String context = "/pic/";//本地服务器的存放地址
//String context = picConfigBean.getNewsPicPath();
//String destination="images\\";
mySmartUpload.initialize(pageContext);
//文件上传
mySmartUpload.upload();
String image_hx = "";
com.jspsmart.upload.File myFile_hx = mySmartUpload.getFiles().getFile(0);
if(!myFile_hx.isMissing()){
image_hx = myFile_hx.getFileName();
String prefix_hx = image_hx.substring(image_hx.lastIndexOf(".") + 1, image_hx.length());
if(prefix_hx.equals("jpg")||prefix_hx.equals("jpeg")||prefix_hx.equals("JPG")||prefix_hx.equals("JPEG")||prefix_hx.equals("bmp")||prefix_hx.equals("BMP")||prefix_hx.equals("png")||prefix_hx.equals("PNG")||prefix_hx.equals("GIF")||prefix_hx.equals("gif"))
{
java.io.File fl = new java.io.File(context + image_hx);
if (fl.exists()) {
/*Random random = new Random();
String s1 = Integer.toString(random.nextInt(9)) + Integer.toString(random.nextInt(9)) + Integer.toString(random.nextInt(9)) + Integer.toString(random.nextInt(9));
s1 += image_hx;
image_hx = s1;*/
myFile_hx.saveAs(context + image_hx);
}
myFile_hx.saveAs(context + image_hx);
}
} //以下为FTP上传
int i=0;
int Size=0;
String FileExt="",suffix="",name1="",newname="",Fnewname="";
String ftpHostname="XXX.XX.X.XXX"; //ftp主机IP地址
String ftpUser="userName"; //用户名
String ftpPwd="psw"; //密码
String ftpDir="/home/benz/"; //ftp目录
FTPClient ftp=new FTPClient();
try {
ftp.connect(ftpHostname);
ftp.login(ftpUser,ftpPwd);
ftp.changeWorkingDirectory(ftpDir); ftp.setFileType(ftp.BINARY_FILE_TYPE); //以BINARY格式传送文件 Fnewname=context+image_hx; //这里需要给出的是文件所在本地机器的根目录路径 FileInputStream f_in=new FileInputStream(Fnewname);
ftp.storeFile(image_hx,f_in); //存储文件到ftp的/file目录中。
out.print("successful");
f_in.close();
ftp.logout(); } catch(Exception e) {
e.printStackTrace();
}
%>
需要用到commons-net的jar包,在apache的网站上就可以下载得到
PS:
我有2个地方需要用到上传,一个是在页面中用sartUpload上传,另外一个是在fckeditor中插入图片,flash时,同时要上传到别的服务器,这种情况下,我就修改了com.fredck.FCKeditor.uploader.SimpleUploaderServlet,这个在这里就不赘述了,一样的,将那段ftp的代码直接copy进去就好了