2011-10-11 52 views
1

web服務我使用下面的Java代碼,以多部分的圖像上傳到ASMX Web服務:上傳多部分圖像ASMX通過安卓

import java.io.File; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.HttpVersion; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.entity.mime.MultipartEntity; 
import org.apache.http.entity.mime.content.ContentBody; 
import org.apache.http.entity.mime.content.FileBody; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.params.CoreProtocolPNames; 
import org.apache.http.util.EntityUtils; 


public class PostFile { 
    public static void main(String[] args) throws Exception { 
    HttpClient httpclient = new DefaultHttpClient(); 
    httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); 

    HttpPost httppost = new HttpPost("http://localhost:9001/upload.asmx/SaveDocument"); 
    File file = new File("c:/TRASH/zaba_1.jpg"); 

    MultipartEntity mpEntity = new MultipartEntity(); 
    ContentBody cbFile = new FileBody(file, "image/jpeg"); 
    mpEntity.addPart("userfile", cbFile); 


    httppost.setEntity(mpEntity); 
    System.out.println("executing request " + httppost.getRequestLine()); 
    HttpResponse response = httpclient.execute(httppost); 
    HttpEntity resEntity = response.getEntity(); 

    System.out.println(response.getStatusLine()); 
    if (resEntity != null) { 
     System.out.println(EntityUtils.toString(resEntity)); 
    } 
    if (resEntity != null) { 
     resEntity.consumeContent(); 
    } 

    httpclient.getConnectionManager().shutdown(); 
    } 
} 

我的問題是,我不知道在服務器端要做什麼。 以下用於常規文件上傳的代碼似乎不起作用。

[WebMethod] 
public bool SaveDocument(Byte[] docbinaryarray, string docname) 
{ 
    string strdocPath; 
    strdocPath = "C:\\DocumentDirectory\\" + docname; 
    FileStream objfilestream =new FileStream(strdocPath,FileMode.Create,FileAccess.ReadWrite); 
    objfilestream.Write(docbinaryarray,0,docbinaryarray.Length); 
    objfilestream.Close(); 

    return true; 
} 

我猜我需要做一些特別的事情來保存多部分文件,但我不知道是什麼。 任何幫助表示讚賞。 謝謝!

+0

我不認爲ASMX服務支持多部分HTTP請求。 –

+0

我將不得不選擇WCF服務嗎? –

回答

1

我使用流式處理,這在ASXM中是不可能的。 我正在使用WCF。