首页

android开发上传大视频大文件demo和服务器

java

2020-8-2


package com.android.upload;
import java.io.File;  
import java.io.OutputStream;  
import java.io.PushbackInputStream;  
import java.io.RandomAccessFile;  
import java.net.Socket;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.os.Environment;  
import android.os.Handler;  
import android.os.Message;  
import android.view.View;  
import android.view.View.OnClickListener;
import android.widget.Button;  
import android.widget.EditText;  
import android.widget.ProgressBar;  
import android.widget.TextView;  
import android.widget.Toast;  
  
import com.android.service.UploadLogService;  
import com.android.socket.utils.StreamTool;

  
public class UploadActivity extends Activity {  
    private EditText filenameText;  
    private TextView resulView;  
    private ProgressBar uploadbar;  
    private UploadLogService logService;  
    private boolean start=true;
    private Handler handler = new Handler(){  
        @Override  
        public void handleMessage(Message msg) {  
            int length = msg.getData().getInt("size");  
            uploadbar.setProgress(length);  
            float num = (float)uploadbar.getProgress()/(float)uploadbar.getMax();  
            int result = (int)(num * 100);  
            resulView.setText(result "%");  
            if(uploadbar.getProgress()==uploadbar.getMax()){  
                Toast.makeText(UploadActivity.this, R.string.success, 1).show();  
            }  
        }  
    };  
      
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
          
        logService = new UploadLogService(this);  
        filenameText = (EditText)this.findViewById(R.id.filename);  
        uploadbar = (ProgressBar) this.findViewById(R.id.uploadbar);  
        resulView = (TextView)this.findViewById(R.id.result);  
        Button button =(Button)this.findViewById(R.id.button);  
        Button button1 =(Button)this.findViewById(R.id.stop); 
        button1 .setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
start=false;

}
});
        button.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
            start=true;
                String filename = filenameText.getText().toString();  
                if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  
                    File uploadFile = new File(Environment.getExternalStorageDirectory(), filename);  
                    if(uploadFile.exists()){  
                        uploadFile(uploadFile);  
                    }else{  
                        Toast.makeText(UploadActivity.this, R.string.filenotexsit, 1).show();  
                    }  
                }else{  
                    Toast.makeText(UploadActivity.this, R.string.sdcarderror, 1).show();  
                }  
            }  
        });  
    }  
    /** 
     * 上传文件 
     * @param uploadFile 
     */  
    private void uploadFile(final File uploadFile) {  
        new Thread(new Runnable() {           
            @Override  
            public void run() {  
                try {  
                    uploadbar.setMax((int)uploadFile.length());  
                    String souceid = logService.getBindId(uploadFile);  
                    String head = "Content-Length=" uploadFile.length() ";filename=" uploadFile.getName() ";sourceid="  
                        (souceid==null? "" : souceid) "\r\n";  
                    
                    Socket socket = new Socket("192.168.1.78",7878);  
                    OutputStream outStream = socket.getOutputStream();  
                    outStream.write(head.getBytes());  
                      
                    PushbackInputStream inStream = new PushbackInputStream(socket.getInputStream());      
                    String response = StreamTool.readLine(inStream);  
                    String[] items = response.split(";");  
                    String responseid = items[0].substring(items[0].indexOf("=") 1);  
                    String position = items[1].substring(items[1].indexOf("=") 1);  
                    if(souceid==null){//代表原来没有上传过此文件,往数据库添加一条绑定记录  
                        logService.save(responseid, uploadFile);  
                    }  
                    RandomAccessFile fileOutStream = new RandomAccessFile(uploadFile, "r");  
                    fileOutStream.seek(Integer.valueOf(position));  
                    byte[] buffer = new byte[1024];  
                    int len = -1;  
                    int length = Integer.valueOf(position);  
                    while(start&&(len = fileOutStream.read(buffer)) != -1){  
                        outStream.write(buffer, 0, len);  
                        length = len;  
                        Message msg = new Message();  
                        msg.getData().putInt("size", length);  
                        handler.sendMessage(msg);  
                    }  
                    fileOutStream.close();  
                    outStream.close();  
                    inStream.close();  
                    socket.close();  
                    if(length==uploadFile.length()) logService.delete(uploadFile);  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        }).start();  
    }  
}  
资源下载此资源下载价格为3D币(VIP免费),请先
资源文件列表
AndroidSocket/SocketClient/.classpath , 364
AndroidSocket/SocketClient/.project , 848
AndroidSocket/SocketClient/.settings/org.eclipse.core.resources.prefs , 55
AndroidSocket/SocketClient/AndroidManifest.xml , 1080
AndroidSocket/SocketClient/bin/AndroidManifest.xml , 1080
AndroidSocket/SocketClient/bin/classes.dex , 12660
AndroidSocket/SocketClient/bin/classes/com/android/service/DBOpenHelper.class , 1262
AndroidSocket/SocketClient/bin/classes/com/android/service/UploadLogService.class , 1904
AndroidSocket/SocketClient/bin/classes/com/android/socket/utils/StreamTool.class , 1970
AndroidSocket/SocketClient/bin/classes/com/android/upload/BuildConfig.class , 345
AndroidSocket/SocketClient/bin/classes/com/android/upload/R$attr.class , 340
AndroidSocket/SocketClient/bin/classes/com/android/upload/R$drawable.class , 407
AndroidSocket/SocketClient/bin/classes/com/android/upload/R$id.class , 507
AndroidSocket/SocketClient/bin/classes/com/android/upload/R$layout.class , 394
AndroidSocket/SocketClient/bin/classes/com/android/upload/R$string.class , 620
AndroidSocket/SocketClient/bin/classes/com/android/upload/R.class , 531
AndroidSocket/SocketClient/bin/classes/com/android/upload/UploadActivity$1.class , 1785
AndroidSocket/SocketClient/bin/classes/com/android/upload/UploadActivity$2.class , 856
AndroidSocket/SocketClient/bin/classes/com/android/upload/UploadActivity$3.class , 1820
AndroidSocket/SocketClient/bin/classes/com/android/upload/UploadActivity$4.class , 4001
AndroidSocket/SocketClient/bin/classes/com/android/upload/UploadActivity.class , 2996
AndroidSocket/SocketClient/bin/jarlist.cache , 119
AndroidSocket/SocketClient/bin/resources.ap_ , 35022
AndroidSocket/SocketClient/bin/res/drawable-hdpi/ic_launcher.png , 9193
AndroidSocket/SocketClient/bin/res/drawable-ldpi/ic_launcher.png , 2658
AndroidSocket/SocketClient/bin/res/drawable-mdpi/ic_launcher.png , 5057
AndroidSocket/SocketClient/bin/res/drawable-xhdpi/ic_launcher.png , 14068
AndroidSocket/SocketClient/bin/SocketClient.apk , 43120
AndroidSocket/SocketClient/gen/com/android/upload/BuildConfig.java , 160
AndroidSocket/SocketClient/gen/com/android/upload/R.java , 1278
AndroidSocket/SocketClient/proguard-project.txt , 781
AndroidSocket/SocketClient/project.properties , 562
AndroidSocket/SocketClient/res/drawable-hdpi/ic_launcher.png , 9397
AndroidSocket/SocketClient/res/drawable-ldpi/ic_launcher.png , 2729
AndroidSocket/SocketClient/res/drawable-mdpi/ic_launcher.png , 5237
AndroidSocket/SocketClient/res/drawable-xhdpi/ic_launcher.png , 14383
AndroidSocket/SocketClient/res/layout/main.xml , 1299
AndroidSocket/SocketClient/res/values/strings.xml , 519
AndroidSocket/SocketClient/src/com/android/service/DBOpenHelper.java , 669
AndroidSocket/SocketClient/src/com/android/service/UploadLogService.java , 1145
AndroidSocket/SocketClient/src/com/android/socket/utils/StreamTool.java , 1627
AndroidSocket/SocketClient/src/com/android/upload/UploadActivity.java , 5644
AndroidSocket/SocketServer/.classpath , 301
AndroidSocket/SocketServer/.project , 388
AndroidSocket/SocketServer/.settings/org.eclipse.core.resources.prefs , 55
AndroidSocket/SocketServer/.settings/org.eclipse.jdt.core.prefs , 629
AndroidSocket/SocketServer/bin/com/android/socket/server/ServerWindow$1$1.class , 1176
AndroidSocket/SocketServer/bin/com/android/socket/server/ServerWindow$1.class , 1860
AndroidSocket/SocketServer/bin/com/android/socket/server/ServerWindow.class , 1390
AndroidSocket/SocketServer/bin/com/android/socket/server/SocketServer$FileLog.class , 1103
AndroidSocket/SocketServer/bin/com/android/socket/server/SocketServer$SocketTask.class , 5721
AndroidSocket/SocketServer/bin/com/android/socket/server/SocketServer.class , 3186
AndroidSocket/SocketServer/bin/com/android/socket/utils/StreamTool.class , 1970
AndroidSocket/SocketServer/src/com/android/socket/server/ServerWindow.java , 1435
AndroidSocket/SocketServer/src/com/android/socket/server/SocketServer.java , 6060
AndroidSocket/SocketServer/src/com/android/socket/utils/StreamTool.java , 1627
没有账号? 忘记密码?

社交账号快速登录