0

我尝试将视频文件从 android 发送到 wcf 服务。视频文件成功上传,两端大小相同,但问题是无法打开。当我尝试通过(vlc 播放器)打开时,它会显示一些错误,例如“ vlc 不支持视频/音频格式 undf。

下面是我的安卓代码

    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";
4

1 回答 1

1

在文件正文中设置正确的 mime 类型并重试,例如:

new FileBody(new File(imagePath),"video/mp4")
于 2013-02-21T12:21:24.723 回答