android上传图片、视频、大文件代码

首先android上传一些小图片是比较容易的一天下来差不多就能调试出来,但是上传一些大的文件时就出现各种问题,包括wcf默认支持64k的文件,后来大图片可以上传了,但是传视频又有问题,上传的视频打不开,经过努力google最后问题终于解决了。作者kwstu QQ806693619

以下是调试代码:原文链接:http://www.kwstu.com/ArticleView/kwstu_2013327194830639

一、Android:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package  com.kwstu.palmjn;
import  java.io.File;
import  java.io.FileInputStream;
import  java.io.IOException;
import  org.apache.http.HttpResponse;
import  org.apache.http.client.ClientProtocolException;
import  org.apache.http.client.HttpClient;
import  org.apache.http.client.methods.HttpPost;
import  org.apache.http.entity.InputStreamEntity;
import  org.apache.http.impl.client.DefaultHttpClient;
import  android.app.Activity;
import  android.graphics.Bitmap;
import  android.graphics.BitmapFactory;
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.ImageView;
 
public  class  UpladeActivity extends  Activity {
    private  Button update_btn;
    private  ImageView img_img;
    /** Called when the activity is first created. */
    @Override
    public  void  onCreate(Bundle savedInstanceState) {
       super .onCreate(savedInstanceState);
       setContentView(R.layout.uploadactivity);
       findAll();
       bind();
    }
    public  void  findAll() {
       update_btn = (Button) this .findViewById(R.id.update_btn);
       img_img = (ImageView) this .findViewById(R.id.img_img);
    }
    public  void  bind() {
       update_btn.setOnClickListener(mylistener);
    }
    private  View.OnClickListener mylistener = new  OnClickListener() {
       public  void  onClick(View v) {
          // TODO Auto-generated method stub
          switch  (v.getId()) {
          case  R.id.update_btn:
             Thread th1 = new  Thread( new  mythread());
             th1.start();
             break ;
          default :
             break ;
          }
       }
    };
 
    Handler hd = new  Handler() {
       @Override
       public  void  handleMessage(Message msg) {
          // TODO Auto-generated method stub
          // super.handleMessage(msg);
          if  (msg.what == 123 ) {
             String jason = msg.obj.toString();
             String filepath = Environment.getExternalStorageDirectory()
                    + File.separator + jason;
             Bitmap bitmap1 = BitmapFactory.decodeFile(filepath);
             img_img.setImageBitmap(bitmap1);
          }
       }
    };
 
    class  mythread implements  Runnable {
       public  void  run() {
          // TODO Auto-generated method stub
          HttpClient hc = new  DefaultHttpClient();
          HttpPost hp = new  HttpPost(wcf地址);
          HttpResponse hr;
          InputStreamEntity reqEntity;
          String path = 上传文件路径;
          File f = new  File(path);
          if  (f.exists()) {
             System.out.println( "successful" );
             try  {
                 reqEntity = new  InputStreamEntity( new  FileInputStream(path), - 1 );
                 reqEntity.setContentType( "binary/octet-stream" );
                 reqEntity.setChunked( true ); // Send in multiple parts if needed
                 hp.setEntity(reqEntity);
                 System.out.println( "4" );
                 HttpResponse response = hc.execute(hp);
                 System.out.println( "5" );
             } catch  (ClientProtocolException e) {
                 // TODO Auto-generated catch block
                 System.out.println(e.getMessage());
                 //e.printStackTrace();
             } catch  (IOException e) {
                 // TODO Auto-generated catch block
                 //e.printStackTrace();
                 System.out.println(e.getMessage());
             }
          }
       }
    }
}

Wcf代码:

接口

?
1
2
3
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string update_pictrue(Stream getStream);

实现

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public  string update_pictrue(Stream getStream)
         {
             Console.WriteLine( "setData service has bean started!" );
             string uploadFolder = @"C:\kkk\";
             string savaPath = "sss" ;
             //string dateString = DateTime.Now.ToShortDateString() + @"\";
             string fileName = "ddd.mp4" ;
             //Stream sourceStream = request.FileData;
             FileStream targetStream = null ;
             if  (!getStream.CanRead)
             {
                 throw  new  Exception( "数据流不可读!" );
             }
             if  (savaPath == null ) savaPath = @"Photo\";
             if  (!savaPath.EndsWith( "\\" )) savaPath += "\\" ;
             uploadFolder = uploadFolder + savaPath; //+ dateString;
             if  (!Directory.Exists(uploadFolder))
             {
                 Directory.CreateDirectory(uploadFolder);
             }
             string filePath = Path.Combine(uploadFolder, fileName);
             using (targetStream = new  FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
             {
                 //read from the input stream in 4K chunks
                 //and save to output stream
                 const  int  bufferLen = 4096 ;
                 byte [] buffer = new  byte [bufferLen];
                 int  count = 0 ;
                 while  ((count = getStream.Read(buffer, 0 , bufferLen)) > 0 )
                 {
                     targetStream.Write(buffer, 0 , count);
                 }
                 targetStream.Close();
                 getStream.Close();
             }
             return  "" ;
         }

配置很重要必须支持大文件上传

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?xml version= "1.0" ?>
<configuration>
     <system.serviceModel>
       <behaviors>
         <serviceBehaviors>
           <behavior name= "Host.ServiceBehavior" >
             <serviceMetadata httpGetEnabled= "true" />
             <serviceDebug includeExceptionDetailInFaults= "false" />
             <dataContractSerializer maxItemsInObjectGraph= "2147483647" />
           </behavior>
         </serviceBehaviors>
         <endpointBehaviors>
           <behavior name= "json" >
             <enableWebScript />
           </behavior>
         </endpointBehaviors>
       </behaviors>
       <services>
         <service name= "Host.Service"  behaviorConfiguration= "Host.ServiceBehavior" >
           <endpoint  binding= "webHttpBinding"  contract= "Host.IService"  behaviorConfiguration= "json"  bindingConfiguration= "LargeBuffer" >
           <identity>
             <dns value= "localhost" />
           </identity>
           </endpoint>
           <endpoint address= "mex"  binding= "mexHttpBinding"  contract= "IMetadataExchange" />
           <host>
             <baseAddresses>
               <add baseAddress= "http://localhost:8732/Mush/Host/Service/" />
             </baseAddresses>
           </host>
         </service>
       </services>
     
 
       <bindings>
         <webHttpBinding>
           <binding name= "LargeBuffer"
           maxBufferSize= "2147483647"  maxReceivedMessageSize= "2147483647" >
             <readerQuotas
             maxStringContentLength= "2147483647"  maxArrayLength= "2147483647" />
             <security mode= "None" ></security>
           </binding>
         </webHttpBinding>
       </bindings>
     </system.serviceModel>
   <system.webServer>
     <modules runAllManagedModulesForAllRequests= "true" />
   </system.webServer>
<startup><supportedRuntime version= "v4.0"  sku= ".NETFramework,Version=v4.0" /></startup></configuration>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值