2013-02-25 111 views
0

我嘗試從android發送視頻文件到wcf服務。視頻文件成功上傳,並且兩端的大小都一樣,但問題是無法打開。對於其他文件,它工作正常,但不是隻有視頻文件。從Android應用發送視頻/音頻文件到wcf服務無法打開

下面是我的Android代碼:

 package com.example.filedemo; 

import java.io.File; 
import java.io.IOException; 
import java.io.UnsupportedEncodingException; 

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.mime.HttpMultipartMode; 
import org.apache.http.entity.mime.MultipartEntity; 
import org.apache.http.entity.mime.content.FileBody; 
import org.apache.http.entity.mime.content.StringBody; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.os.Environment; 
import android.util.Log; 

public class HttpUpload { 

    public static String res; 
    public static String response; 
    public void myUploadedfile() { 
     HttpClient httpClient = new DefaultHttpClient(); 

     HttpPost postRequest = new HttpPost(
       "http://10.160.0.18:85/Service.svc/UploadFile?fileName=vd.mp4"); 
     /* ResponseHandler<String> responseHandler = new BasicResponseHandler(); */ 

     // Indicate that this information comes in parts (text and file) 
     MultipartEntity reqEntity = new MultipartEntity(
       HttpMultipartMode.BROWSER_COMPATIBLE); 

     try { 

      // Create a JSON object to be used in the StringBody 
      JSONObject jsonObj = new JSONObject(); 

      // Add some values 
      jsonObj.put("filename", "vd.mp4"); 

      // Add the JSON "part" 
      reqEntity.addPart("entity", new StringBody(jsonObj.toString())); 
     } catch (JSONException e) { 
      Log.v("App", e.getMessage()); 
     } catch (UnsupportedEncodingException e) { 
      Log.v("App", e.getMessage()); 
     } 

     FileBody fileBody = new FileBody(new File(
       Environment.getExternalStorageDirectory(), "vd.mp4"));// ,"application/octet-stream"); 
     reqEntity.addPart("file", fileBody); 

     try { 
      postRequest.setEntity(reqEntity); 

      // Execute the request "POST" 
      HttpResponse httpResp = httpClient.execute(postRequest); 

      /*HttpResponse response = null;*/ 
      // Check the status code, in this case "created" 

      Log.v("App", "Created"); 
      /*if (((HttpResponse) response).getStatusLine().getStatusCode() == HttpStatus.SC_CREATED) 
      { 

      }*/ 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 


} 

WCF代碼

FileStream fileToupload = new FileStream("D:\\vd.mp4", FileMode.Create, FileAccess.Write); 

byte[] bytearray = new byte[10000]; 
int bytesRead, totalBytesRead = 0; 
do 
{ 
bytesRead = mystream.Read(bytearray, 0, bytearray.Length); 
totalBytesRead += bytesRead; 
} while (bytesRead > 0); 

fileToupload.Write(bytearray, 0, bytearray.Length); 
fileToupload.Close(); 
fileToupload.Dispose(); 
return "success"; 

回答

相關問題