⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendfile.java

📁 applet实现基于http的客户端上传源代码
💻 JAVA
字号:
import java.awt.Canvas;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Graphics;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;

import sun.security.krb5.internal.crypto.g;

public class SendFile  {
public static void main(String[] args) {
	
	FileDialog fdg=new FileDialog(new Frame(),"打开",FileDialog.LOAD);
	fdg.setVisible(true);
	String directory=fdg.getDirectory();
	String filename=fdg.getFile();
	String name1=fdg.getName();
	System.out.println(directory+"aa"+filename+"bb"+name1);
    File file = new File(directory+filename); //有3百多M

   // 建立文件的输入流
   System.out.println(file.getName());
   String name=file.getName();
  long filesize = file.length();
  double fenzi=0;
  long fenmu=Math.round(filesize/(1024*1024)+0.5);
  System.out.println(filesize);
   FileInputStream aFile = null;

   try {
    aFile = new FileInputStream(file);
   } catch (Exception e) {
    e.printStackTrace();
   }

   byte[] buf = new byte[1024 * 1024]; // 读取数据的缓存块
   int len = 0; // 每次读取的长度
   long curPos = 0L; // 文件读取的当前位置

   byte actId = 1; // 操作标识,第一次提交为1.其它提交时为2
   String fileId = ""; // 文件的唯一标识
   byte actRet = 0; // 提交处理后结果

   // 分块读取文件
   try {
    while ((len = aFile.read(buf)) != -1) {
     // 打开远程
     URLConnection con = getConnection();
     OutputStream os = con.getOutputStream();
     DataOutputStream dos = new DataOutputStream(os);
     // 发送基本信息
     dos.writeByte(actId);
     if (actId == 1)
      actId = 2;
     dos.writeUTF(fileId);
     dos.writeLong(curPos);
     dos.writeUTF(name);
     dos.flush();
     // 写入数据
     os.write(buf, 0, len);//将指定buf字节数组中从0开始的 len 个字节写入基础输出流
     os.flush();

     // 关闭发送流,提交数据
     os.close();
     curPos += len;

     // 打印时间
     //Date date=new  Date(System.currentTimeMillis());
        //Calendar cal = Calendar.getInstance(Locale.CHINESE);
      //System.out.println(cal.YEAR+"年"+cal.MONTH+"月"+cal);
     System.out.println(new Date(System.currentTimeMillis())+" submit over");

     InputStream uis = con.getInputStream();
     DataInputStream dis = new DataInputStream(uis);
       byte retActId = dis.readByte();
     String retFileId = dis.readUTF();
     byte retActRet = dis.readByte();
     fileId = retFileId;// 文件的唯一标识

     // 打印时间
     System.out.println(new Date(System.currentTimeMillis()) + " listen over");
     fenzi=fenzi+1;
     
     
     
    
    // Graphics g= Class.forName("Graphics");
     
     
     
     System.out.println("传输了总文件的"+fenmu+"分之"+((int)fenzi));
    }//while循环结束
   } catch (Exception e) {
    e.printStackTrace();
   }

}

private static URLConnection getConnection() throws IOException {
   URL url = new URL("http://192.168.1.4:8080/webproject1/servlet/UploadServlet");
   URLConnection con=url.openConnection();
   con.setDoInput(true);
   con.setDoOutput(true);
   con.setUseCaches(true);
   con.setDefaultUseCaches(true);
   return con;
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -