服务器端怎么能获得本地电脑上传文件的路径

服务器端怎么能获得本地电脑上传文件的路径,第1张

要获取excel的file而不是路径 路径在浏览器中是不确定因素在ie的file标签是可以获取路径的 而用火狐就获取不到 所以不要用路径你应该把form标签设置enctype="multipart/form-data"属性 然后在后台接收formfile传过来的东西 用file接一下之后你要存本地就可以用io流存 如果要存数据库就把二进制流存数据库就行了 现在上传有很多方法 去网上找找 我说的这个是最简单的

  问一下,你是想做ftp上传下载么?

首先你需要安装一个ftp服务端程序,启动起来,然后下载一个ftp客户端程序,测试能不能连接,首先这一块儿需要测试通过。

代码ftp上传下载

  21 上传代码:

  import javaioFile;

  import javaioFileInputStream;

  import orgapachecommonsnetftpFTPClient;

  import orgapachecommonsnetftpFTPReply;

  public class test {

  private FTPClient ftp;

  /

  

   @param path 上传到ftp服务器哪个路径下

   @param addr 地址

   @param port 端口号

   @param username 用户名

   @param password 密码

   @return

   @throws Exception

  /

  private boolean connect(String path,String addr,int port,String username,String password) throws Exception {

  boolean result = false;

  ftp = new FTPClient();

  int reply;

  ftpconnect(addr,port);

  ftplogin(username,password);

  ftpsetFileType(FTPClientBINARY_FILE_TYPE);

  reply = ftpgetReplyCode();

  if (!FTPReplyisPositiveCompletion(reply)) {

  ftpdisconnect();

  return result;

  }

  ftpchangeWorkingDirectory(path);

  result = true;

  return result;

  }

  /

  

   @param file 上传的文件或文件夹

   @throws Exception

  /

  private void upload(File file) throws Exception{

  if(fileisDirectory()){

  ftpmakeDirectory(filegetName());

  ftpchangeWorkingDirectory(filegetName());

  String[] files = filelist();

  for (int i = 0; i < fileslength; i++) {

  File file1 = new File(filegetPath()+"\\"+files[i] );

  if(file1isDirectory()){

  upload(file1);

  ftpchangeToParentDirectory();

  }else{

  File file2 = new File(filegetPath()+"\\"+files[i]);

  FileInputStream input = new FileInputStream(file2);

  ftpstoreFile(file2getName(), input);

  inputclose();

  }

  }

  }else{

  File file2 = new File(filegetPath());

  FileInputStream input = new FileInputStream(file2);

  ftpstoreFile(file2getName(), input);

  inputclose();

  }

  }

  public static void main(String[] args) throws Exception{

  test t = new test();

  tconnect("", "localhost", 21, "yhh", "yhhazr");

  File file = new File("e:\\uploadify");

  tupload(file);

  }

  }

  22 下载代码

  这里没有用到filter,如果用filter就可以过滤想要的文件。

  public class Ftp {

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

Ftp ftp = new Ftp();

String hostname = "wwwstrawberrycom";

Integer port = 21;

String username = "username";

String password = "password";

String remote = "/ctxt";

String local = "/home/tin/LeonChen/FTP/";

try {

ftpconnect(hostname, port, username, password);

Systemoutprintln("接收状态:"+ftpdownload(remote, local));

ftpdisconnect();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

private FTPClient ftpClient = new FTPClient();

/

连接到FTP服务器

@param hostname 主机名

@param port 端口

@param username 用户名

@param password 密码

@return 是否连接成功

@throws IOException

/

private boolean connect(String hostname, int port, String username,

String password) throws IOException {

ftpClientconnect(hostname, port);

ftpClientsetControlEncoding("UTF-8");

if (FTPReplyisPositiveCompletion(ftpClientgetReplyCode())) {

if (ftpClientlogin(username, password)) {

return true;

}

}

disconnect();

return false;

}

/

从FTP服务器上下载文件,支持断点续传,上传百分比汇报

@param remote 远程文件路径

@param local 本地文件路径

@return 上传的状态

@throws IOException

/

public DownloadStatus download(String remote, String local)

throws IOException {

// 设置被动模式

ftpCliententerLocalPassiveMode();

// 设置以二进制方式传输

ftpClientsetFileType(FTPBINARY_FILE_TYPE);

DownloadStatus result;

// 检查远程文件是否存在

FTPFile[] files = ftpClientlistFiles(new String(remote

getBytes("UTF-8"), "iso-8859-1"));

if (fileslength != 1) {

Systemoutprintln("远程文件不存在");

return DownloadStatusRemote_File_Noexist;

}

long lRemoteSize = files[0]getSize();

String fildName = files[0]getName();

// 本地存在文件,进行断点下载

File f = new File(local+fildName);

if (fexists()) {

long localSize = flength();

if (localSize >= lRemoteSize) {

Systemoutprintln("本地文件大于远程文件,下载中止");

return DownloadStatusLocal_Bigger_Remote;

}

// 进行断点续传,并记录状态

FileOutputStream out = new FileOutputStream(f, true);

ftpClientsetRestartOffset(localSize);

InputStream in = ftpClientretrieveFileStream(new String(remotegetBytes("UTF-8"), "iso-8859-1"));

byte[] bytes = new byte[1024];

long step = lRemoteSize / 100;

long process = localSize / step;

int c;

while ((c = inread(bytes)) != -1) {

outwrite(bytes, 0, c);

localSize += c;

long nowProcess = localSize / step;

if (nowProcess > process) {

process = nowProcess;

if (process % 10 == 0)

Systemoutprintln("下载进度:" + process);

// TODO 更新文件下载进度,值存放在process变量中

}

}

inclose();

outclose();

boolean isDo = ftpClientcompletePendingCommand();

if (isDo) {

result = DownloadStatusDownload_From_Break_Success;

} else {

result = DownloadStatusDownload_From_Break_Failed;

}

} else {

OutputStream out = new FileOutputStream(f);

InputStream in = ftpClientretrieveFileStream(new String(remotegetBytes("UTF-8"), "iso-8859-1"));

byte[] bytes = new byte[1024];

long step = lRemoteSize / 100;

long process = 0;

long localSize = 0L;

int c;

while ((c = inread(bytes)) != -1) {

outwrite(bytes, 0, c);

localSize += c;

long nowProcess = localSize / step;

if (nowProcess > process) {

process = nowProcess;

if (process % 10 == 0)

Systemoutprintln("下载进度:" + process);

// TODO 更新文件下载进度,值存放在process变量中

}

}

inclose();

outclose();

boolean upNewStatus = ftpClientcompletePendingCommand();

if (upNewStatus) {

result = DownloadStatusDownload_New_Success;

} else {

result = DownloadStatusDownload_New_Failed;

}

}

return result;

}

private void disconnect() throws IOException {

if (ftpClientisConnected()) {

ftpClientdisconnect();

}

}

}

不知道你是不是想得到某一文件夹的所有文件,如果是,可以试试下面的代码:

string Folder = ServerMapPath("~/YourFolder/");

SystemIODirectoryInfo oDir = new SystemIODirectoryInfo(Folder);

SystemIOFileInfo[] aFiles = oDirGetFiles();

for (int i = 0; i < aFilesLength; i++)

{

ResponseWrite("文件路径:" + aFiles[i]FullName + "<br />");

}

String realpath = ServletActionContextgetServletContext()getRealPath("/upload") ;//获取服务器路径

        String[] targetFileName = uploadFileName;

        for (int i = 0; i < uploadlength; i++) {

           File target = new File(realpath, targetFileName[i]);

              FileUtilscopyFile(upload[i], target); 

              //这是一个文件复制类copyFile()里面就是IO操作,如果你不用这个类也可以自己写一个IO复制文件的类    

         } 

其中private File[] upload;// 实际上传文件

    private String[] uploadContentType; // 文件的内容类型

    private String[] uploadFileName; // 上传文件名

这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法!

服务器使用的是什么?tomcat?

String loadpath = requestgetSession()getServletContext()getRealPath("/");

String root = new File(loadpath)getParentFile()getParentFile()getAbsolutePath();

这个可以获取到tomcat的服务器的项目的同级目录

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 服务器端怎么能获得本地电脑上传文件的路径

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情