1
Android 클라이언트를 사용하여 파일을 wcf 서비스에 업로드하고 있습니다. 업로드가 작동하지만 파일의 이름과 다른 정수 매개 변수를 요청에 넣으려고합니다.WCF 파일 메타 데이터가 포함 된 webHttpBinding
어떻게하면됩니까? afaik, 내가 SOAP로 메시지를 패키징하지 않기 때문에 나는 메시지 계약을 사용할 수 없다. 대안이 있습니까?
나는 안드로이드 측에이 코드를 사용 :
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bm.compress(CompressFormat.JPEG, 75, bos);
byte[] data = bos.toByteArray();
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(serviceAddress +
"/Upload/");
ByteArrayBody bab = new ByteArrayBody(data, "forest.jpg");
MultipartEntity reqEntity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("step", new StringBody("1"));
reqEntity.addPart("fileName", new StringBody("elad.jpg"));
reqEntity.addPart("file", bab);
postRequest.setEntity(reqEntity);
HttpResponse response = httpClient.execute(postRequest);
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
String sResponse;
StringBuilder s = new StringBuilder();
while ((sResponse = reader.readLine()) != null) {
s = s.append(sResponse);
과 (단지 teesting 용) WCF 측이 코드 :
[WebInvoke(UriTemplate = "", Method = "POST", BodyStyle= WebMessageBodyStyle.Bare)]
public void Upload(Stream fileStream)
{
FileStream targetStream = null;
string uploadFolder = @"C:\inetpub\wwwroot\Upload\test.jpg";
using (targetStream = new FileStream(uploadFolder, FileMode.Create,
FileAccess.Write, FileShare.None))
{
const int bufferLen = 65000;
byte[] buffer = new byte[bufferLen];
int count = 0;
while ((count = fileStream.Read(buffer, 0, bufferLen)) > 0)
{
targetStream.Write(buffer, 0, count);
}
targetStream.Close();
fileStream.Close();
}
}
감사합니다!