当前位置:  技术问答>java相关

java中如何实现基于c/s的文件上载??做个相关工作的朋友来帮个忙吧

    来源: 互联网  发布时间:2015-10-20

    本文导语:  目前网上有几个上载文件的例子,但好象是给jsp用的,是基于b/s的模式,或则是ftp形式的。 现我要采用client/server模式,客户端与服务器建立连接时,从服务器端获取ip,port和存放目录,client端就可将目标文件上载到服...

目前网上有几个上载文件的例子,但好象是给jsp用的,是基于b/s的模式,或则是ftp形式的。
现我要采用client/server模式,客户端与服务器建立连接时,从服务器端获取ip,port和存放目录,client端就可将目标文件上载到服务器指定的存放路径中。
如何实现上面的功能?
有朋友写过这样的程序吗?
帮个忙吧
谢了先!

|
好长啊

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletException;

public class UploadFileServlet extends HttpServlet {

    private ServletInputStream sin = null;
    private OutputStream fout = null;
    private String CharacterEncoding = "";
    private String ContentType = "";
    private String filename = "";

    private byte temp[] = new byte[4096];

    protected static final String newline = "n";
    protected static final String UploadDir = "./config/mydomain/applications/DefaultWebApp";

    protected final void doPost(HttpServletRequest request, HttpServletResponse response) {
System.out.println("************************************");
        upload(request, response);
    }

    protected final void doGet(HttpServletRequest request, HttpServletResponse response) {
System.out.println("************************************");
System.out.println("request.getMethod():" + request.getMethod());
//        upload(request, response);
System.out.println(request.getMethod() + " CAN NOT UPLOAD A FILE");
    }

    public void upload(HttpServletRequest request, HttpServletResponse response) {

        String ContentType = "";
        int i = 0;

        setCharacterEncoding(request.getCharacterEncoding());
System.out.println("request.getMethod():" + request.getMethod());
System.out.println("request.getContentType():" + request.getContentType());
System.out.println("ok");
        setContentType(request.getContentType());

        try {
            sin = request.getInputStream();
            filename = getFileName(sin);
//**************
            i = sin.readLine(temp, 0, temp.length);
            if (this.CharacterEncoding != null) {
                ContentType = new String(temp, 0, i, this.CharacterEncoding);
            }
            else {
                ContentType = new String(temp, 0, i);
            }
            System.out.println("ContentType:" + ContentType);
            if (ContentType.indexOf("Content-Type") >= 0) {
                System.out.println("uploading ...");
                sin.readLine(temp, 0, temp.length);
            }
//**************
            if ((filename != null) || (!filename.equals(""))) {
                fout = new FileOutputStream(new File(UploadDir, filename));

                while ((i = sin.readLine(temp, 0, temp.length)) !=  -1) {

                    if (this.CharacterEncoding != null) {
                        ContentType = new String(temp, 0, i, this.CharacterEncoding);
                    }
                    else {
                        ContentType = new String(temp, 0, i);
                    }
                    if ((ContentType.indexOf(this.ContentType) == 0)&&(temp[0] == 45)) {
                        System.out.println("this.ContentType:" + this.ContentType);
                        break;
                    }

                    fout.write(temp,0,i);
//                    fout.write(newline.getBytes());
                }
            }
        }
        catch (IOException ioe) {
            System.out.print(ioe.getMessage());
        }
        finally {
            try {
                fout.close();
            }
            catch (Exception e) {
            }
        }
        System.out.println("*****    FINISHED    ******");

    }
    //request.getContentType()·½·¨µÃµ½String s
    protected void setContentType(String s) {
        ContentType = s;
        int j;
System.out.println("ContentType.indexOf("boundary="):" + ContentType.indexOf("boundary="));
        if((j = ContentType.indexOf("boundary=")) != -1) {
            ContentType = ContentType.substring(j + 9);
            ContentType = "--" + ContentType;
        }
        System.out.println("ContentType: " + ContentType);
        //it is commonly null
    }
    //request.getCharacterEncoding()·½·¨µÃµ½String s
    protected void setCharacterEncoding(String s) {
        CharacterEncoding = s;
        System.out.println("CharacterEncoding: " + s);
    }
    //get filename
    private String getFileName(ServletInputStream sin) {
        String filename = "";
        String str = "";

        int i = 0;
        int j = 0;
        try {

            while ((i = sin.readLine(temp, 0, temp.length)) != -1) {
                if (this.CharacterEncoding != null) {
                    str = new String(temp, 0, i, this.CharacterEncoding);
                }
                else {
                    str = new String(temp, 0, i);
                }
                if ((j = str.indexOf("filename=")) != -1) {
                    j += 10;
                    str = str.substring(j);
                    System.out.println("str:" + str);
                    // the last string of "
                    if ((j = str.indexOf(""")) > 0) {
                        str = str.substring(0, j);
                    }
                    //now str is the file directory in the client pc
                    if ((j = str.lastIndexOf("\")) != -1) {
                        filename = str.substring(j);
                    }
                    break;
                }
            }
        }
        catch (IOException ioe) {
            System.out.println("ERROR");
            System.out.println(ioe.getMessage());
        }

        System.out.println("filename:" + filename + ".");
        return filename;
    }
}

|
/**SiteFileFetch.java*/
package NetFox;
import java.io.*;
import java.net.*;
public class SiteFileFetch extends Thread {
SiteInfoBean siteInfoBean = null; //文件信息Bean
long[] nStartPos; //开始位置
long[] nEndPos; //结束位置
FileSplitterFetch[] fileSplitterFetch; //子线程对象
long nFileLength; //文件长度
boolean bFirst = true; //是否第一次取文件
boolean bStop = false; //停止标志
File tmpFile; //文件下载的临时信息
DataOutputStream output; //输出到文件的输出流

   public SiteFileFetch(SiteInfoBean bean) throws IOException{
siteInfoBean = bean;
//tmpFile = File.createTempFile ("zhong","1111",new File(bean.getSFilePath()));
tmpFile = new File(bean.getSFilePath()+File.separator + bean.getSFileName()+".info");
if(tmpFile.exists ()){
bFirst = false;
read_nPos();
}else{
nStartPos = new long[bean.getNSplitter()];
nEndPos = new long[bean.getNSplitter()];
}
   }

public void run(){
//获得文件长度
//分割文件
//实例FileSplitterFetch
//启动FileSplitterFetch线程
//等待子线程返回
try{
if(bFirst){
nFileLength = getFileSize();
if(nFileLength == -1){
System.err.println("File Length is not known!");
}else if(nFileLength == -2){
System.err.println("File is not access!");
}else{
for(int i=0;i

    
 
 

您可能感兴趣的文章:

  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • java.util.Date 和 java.slq.Date 如何最简单实现互换?
  • java tomcat实现Session对象的持久化原理及配置方法介绍
  • 不太明白,利用RMI实现JAVA分布式应用 和 EJB实现JAVA分布式应用有什么区别。
  • java实现判断字符串是否全是数字的四种方法代码举例
  • java的API中有没有既实现了Map接口又实现了List接口的类?
  • java序列化实现Serializable接口
  • 我是java新手,请问java中与平台相关的操作是怎样实现的
  • java中Spring框架介绍及如何实现对Bean的管理
  • java文件复制代码片断(java实现文件拷贝)
  • java Servlet实现Session创建存取以及url重写代码示例
  • 要做一个在applet,实现可以托拽的图形(比如长方形和线段等)?那位高手有资料?或者有没有java的第三方类库实现此功能?
  • java 与 C++ 实现后绑定的方法
  • XUL的Java实现 javaXUL
  • 用JAVA实现与QQ相同的功能!
  • 请问《软件工程java语言实现》一书在那里能下载
  • 如何实现Java下的回调函数!
  • Java实现的XForms Chiba
  • Java的SAMBA客户端实现 jCIFS
  • Lua 实现的 Java 虚拟机 luje
  • yaml 的 java 实现 JYaml
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • JAVA编译的CLASS文件可以反编译为JAVA文件吗?
  • 保存java.sh文件时,多出一个java.sh~文件
  • 用什么工具可以把JAVA的.CLASS文件反编译成.JAVA文件??
  • 请问把.class文件反编译为.java文件的工具有什么???能恢复到原来的.java文件吗???
  • 一个.java文件中怎样来调用另一个.java文件中的变量及其它东西!
  • 用java读中文linux中的文件是正确的,用java读英文linux版本中的文件是乱码,如何使英文linux读出的文件数据也是中文的?
  • java读取csv文件示例分享(java解析csv文件)
  • 我刚学java,想请教一下,我在文本中创建了一个接口,一个类,还有一个扩展类,保存为.java文件时,如何给文件名?
  • 请教:有没有把java编译好的.java和.class文件编译成各个平台下的可执行文件??.exe?着急着急
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 初学 java 的朋友来和我交朋友,我也是初学。我的 QQ 号是 33555085
  • LINUX下JAVA要代替C..?常跟朋友讨论的一个问题
  • 初学java,该看那些书,请朋友们指教
  • 各位使用过JAVA的朋友们!JAVA好用吗?它有向VC那样的集成开发环境吗?
  • 那位朋友有java类库手册?多谢了
  • 有没有在武汉学JAVA的和做开发的朋友!?
  • 愿交JAVA朋友,高手更好!!!
  • 我初学JAVA,大家愿意交朋友的进来看看!留QQ的给分啊!
  • 想认识一下重庆籍的unix,java开发的朋友!请进!
  • 各位朋友:请帮我推荐一下学java的教程
  • Java的版主真牛阿,哈哈,和朋友问好放点风也给删,佩服,散分,最后一次在这里!!
  • 节日小送分,给喜欢JAVA的朋友们!
  • 哪位朋友有关于Java调试方面的资料?
  • 有没有朋友用java和c访问过gdbm(高分求帮助)
  • 请问在工作岗位的朋友!使用java开发的公司对c#的态度如何?
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • 东软的java前景如何?东软的朋友快来谈一谈。
  • 哪位朋友有JAVA2认证复习指南?到那里下载电子版......
  • 用VisualAge for java的朋友过来看看
  • 小弟是只菜鸟!真诚的结交天下所有的java朋友!!请大家留下QQ !
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3