请教高人:
项目遇到:
FTP 路径: 192.168.0.117 端口21
user/pwd sa/sa
默认FTP 根路径 d:/testFTP
如果直接从根目录下(testFTP) 上传下载文件都没有问题 ,现在是上传文件到该机器的 E:/download 文件夹下,就不知道怎么处理了。 如果用FTP 客户端有个 远程路径 写上 E:/download, 也可以登录到E:/download下。 请问有java如何处理?
项目遇到:
FTP 路径: 192.168.0.117 端口21
user/pwd sa/sa
默认FTP 根路径 d:/testFTP
如果直接从根目录下(testFTP) 上传下载文件都没有问题 ,现在是上传文件到该机器的 E:/download 文件夹下,就不知道怎么处理了。 如果用FTP 客户端有个 远程路径 写上 E:/download, 也可以登录到E:/download下。 请问有java如何处理?
解决方案 »
- struts2上传问题
- 更新了原先写的JDBC查询缓存
- 怎么知道各jms实现的客户端所需的jar包?
- linux安装oracle时解压2小时无反映,大家知道怎么回事?
- Spring getHibernateTemplate().get(User.class,pKey)返回空
- spring的action代理集成struts 多个action是时候出错
- 初学ssh遇到一个奇怪的问题很郁闷
- hibernate定义表主键的问题,相信大家都遇到过
- Weblogic Server 8.1 版 与Weblogic Platform 8.1 版有什么区别
- 数据库汇总查询,真诚讨教
- 关于eclipse的使用
- spring AOP拦截action
不行的话,你在java中定义变量值保存上传文件的基础地址值
既然你上传到e盘,那试问你是怎么上传到e盘的呢?
地址固不固定都没关系,地址可以做为参数传递。 FTPclient 没看到有方法实现
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import nc.itf.doc.DocDelegator;
import nc.vo.doc.doc_007.DirVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.SuperVO;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTP;
public class FtpTool {
private FTPClient ftp;
private String romateDir = "";
private String userName = "";
private String password = "";
private String host = "";
private String port = "21";
public FtpTool(String url) throws IOException {
//String url="ftp://user:password@ip:port/ftptest/psd";
int len = url.indexOf("//");
String strTemp = url.substring(len + 2);
len = strTemp.indexOf(":");
userName = strTemp.substring(0, len);
strTemp = strTemp.substring(len + 1);
len = strTemp.indexOf("@");
password = strTemp.substring(0, len);
strTemp = strTemp.substring(len + 1);
host = "";
len = strTemp.indexOf(":");
if (len < 0)//没有设置端口
{
port = "21";
len = strTemp.indexOf("/");
if (len > -1) {
host = strTemp.substring(0, len);
strTemp = strTemp.substring(len + 1);
} else {
strTemp = "";
}
} else {
host = strTemp.substring(0, len);
strTemp = strTemp.substring(len + 1);
len = strTemp.indexOf("/");
if (len > -1) {
port = strTemp.substring(0, len);
strTemp = strTemp.substring(len + 1);
} else {
port = "21";
strTemp = "";
}
}
romateDir = strTemp;
ftp = new FTPClient();
ftp.connect(host, FormatStringToInt(port));
}
public FtpTool(String host, int port) throws IOException {
ftp = new FTPClient();
ftp.connect(host, port);
}
public String login(String username, String password) throws IOException {
this.ftp.login(username, password);
return this.ftp.getReplyString();
}
public String login() throws IOException {
this.ftp.login(userName, password);
System.out.println("ftp用户: " + userName);
System.out.println("ftp密码: " + password);
if (!romateDir.equals(""))
System.out.println("cd " + romateDir);
ftp.changeWorkingDirectory(romateDir);
return this.ftp.getReplyString();
}
public boolean upload(String pathname, String filename) throws IOException, BusinessException {
int reply;
int j;
String m_sfilename = null;
filename = CheckNullString(filename);
if (filename.equals(""))
return false;
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
System.out.println("FTP server refused connection.");
System.exit(1);
}
FileInputStream is = null;
try {
File file_in;
if (pathname.endsWith(File.separator)) {
file_in = new File(pathname + filename);
} else {
file_in = new File(pathname + File.separator + filename);
}
if (file_in.length() == 0) {
System.out.println("上传文件为空!");
return false;
}
//产生随机数最大到99
j = (int)(Math.random()*100);
m_sfilename = String.valueOf(j) + ".pdf"; // 生成的文件名
is = new FileInputStream(file_in);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.storeFile(m_sfilename, is);
ftp.logout();
} finally {
if (is != null) {
is.close();
}
}
System.out.println("上传文件成功!");
return true;
}
public boolean delete(String filename) throws IOException {
FileInputStream is = null;
boolean retValue = false;
try {
retValue = ftp.deleteFile(filename);
ftp.logout();
} finally {
if (is != null) {
is.close();
}
}
return retValue;
}
public void close() {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static int FormatStringToInt(String p_String) {
int intRe = 0;
if (p_String != null) {
if (!p_String.trim().equals("")) {
try {
intRe = Integer.parseInt(p_String);
} catch (Exception ex) {
}
}
}
return intRe;
}
public static String CheckNullString(String p_String) {
if (p_String == null)
return "";
else
return p_String;
}
public boolean downfile(String pathname, String filename) {
String outputFileName = null;
boolean retValue = false;
try {
FTPFile files[] = ftp.listFiles();
int reply = ftp.getReplyCode();
////////////////////////////////////////////////
if (!FTPReply.isPositiveCompletion(reply)) {
try {
throw new Exception("Unable to get list of files to dowload.");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/////////////////////////////////////////////////////
if (files.length == 0) {
System.out.println("No files are available for download.");
}else {
for (int i=0; i <files.length; i++) {
System.out.println("Downloading file "+files[i].getName()+"Size:"+files[i].getSize());
outputFileName = pathname + filename + ".pdf";
//return outputFileName;
File f = new File(outputFileName);
//////////////////////////////////////////////////////
retValue = ftp.retrieveFile(outputFileName, new FileOutputStream(f));
if (!retValue) {
try {
throw new Exception ("Downloading of remote file"+files[i].getName()+" failed. ftp.retrieveFile() returned false.");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/////////////////////////////////////////////////////////////
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return retValue;
}
}
试试这个
怎么知道是访问的那个盘符下的文件夹?
// TODO Auto-generated method stub
try{
FileInputStream input =new FileInputStream(new File("D:/test.txt"));
FTPClient ftp=new FTPClient();
ftp.connect("192.168.0.117");
ftp.login("sa", "sa");
int reply = ftp.getReplyCode();
ftp.changeWorkingDirectory("e:/FtpTest");
ftp.storeFile("test.txt", input);
input.close();
ftp.logout();
}catch(Exception e){
e.printStackTrace();
}
}这样是否也可以?
要执行上面的文件或者把 ftp服务器指定的文件目录下执行文件 或者拷贝一份到任意路径(可以是E/download)的话 要使用telnet 连接该机器
你说java操作是指java来做客户端访问你的ftp服务器么?
如果是,建立alias之后e:\download被ftp映射成了根目录下的一个子目录所以当你访问/download时就会进入你的e:\download这和设置http的alias很相似不知道你试了没有
ftp客户端是不能得不到盘符的
ps:话说楼主在法国?
++1
所以要到E盘去 可以用其他技术实现telent