2011-10-22 7 views
7

मुझे अपने एंड्रॉइड ऐप से .NET WCF में .doc फ़ाइल अपलोड करने में समस्या है। मैं फाइल भेजने में सक्षम हूं लेकिन यह डब्ल्यूसीएफ अंत में समर्थित नहीं है। यहाँ अपलोड करने के लिए मेरी विधि है:एंड्रॉइड से .NET WCF तक एमएस वर्ड फ़ाइलों को अपलोड करना?

protected void checkinmethod(String rid) throws Exception { 

     File SDCardRoot = Environment.getExternalStorageDirectory(); 
     //create a new file, specifying the path, and the filename 
     //which we want to save the file as. 
     File file = new File(SDCardRoot, rid+".doc"); 
     InputStream in = new FileInputStream(file); 

     byte[] bytearray=new byte[(int) file.length()]; 

     int ab=0; 
     do 
     { 
      ab=in.read(bytearray, 0, bytearray.length); 

     } while(ab>0); 



     InputStream mystream= new ByteArrayInputStream(bytearray); 
     InputStreamEntity se=new InputStreamEntity(mystream, 10000); 

     HttpPost request = new HttpPost("http://10.66.52.247/tutorwcf/Service.svc/Service/updateMyDoc1"); 
     request.setHeader("Accept", "application/json"); 
     request.setHeader("Content-type", "application/msword"); 
     request.setEntity(se); 





     try { 



      DefaultHttpClient httpClient = new DefaultHttpClient(); 

      HttpResponse response = httpClient.execute(request); 

      HttpEntity responseEntity = response.getEntity(); 

      // Read response data into buffer 
      char[] buffer = new char[(int)responseEntity.getContentLength()]; 
      InputStream stream = responseEntity.getContent(); 
      InputStreamReader reader = new InputStreamReader(stream); 
      reader.read(buffer); 
      stream.close(); 
      statuss.setText(new String(buffer)); 

     // 
     } 
     catch (Exception e) { 
      // TODO: handle exception 
      Log.e("hi", "exception is", e); 
      statuss.setText("exception"); 
     } 
    } 

यहाँ .net कोड है:

FileStream fileToupload = new FileStream("D:\\myfile.doc", 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"; 

} 

कृपया लिंक या कोड या किसी बात भेजें।

आप विचार नहीं है के बारे में यह इस सवाल को रैंक कृपया .. धन्यवाद

+0

सही समस्या क्या है? जब आप कोड चलाते हैं तो क्या आपको कोई त्रुटि संदेश या अपवाद मिलता है? – Kangkan

+0

महोदय, डब्ल्यूसीएफ अंत में मुझे एक शब्द फ़ाइल मिल रही है। जब मैं इसे खोलने की कोशिश करता हूं तो यह मुझे त्रुटि "त्रुटि पढ़ने" दिखाता है। लेकिन जब मैं इसे नोट पैड या शब्द पैड में खोलता हूं तो यह मुझे इस तरह के प्रतीक दिखाता है: ÐÏà¡ ± á एक्स «Ç3aZ ¢ ÒÂà, ° D0 j ~ è3ß¶Îbãí ~ i> ƒØÍ3¿ \' õ? ê/ç [ج ¶Géâ \ Ä! Y-Urk। –

+0

अपने प्रश्न रैंकिंग? – Krishnabhadra

उत्तर

3
public void checkinstream(String rid, String filename) throws IOException 
     { 
        URL url=null; 
       HttpURLConnection conn = null; 
        DataOutputStream dos = null; 
        DataInputStream inStream = null; 
        String existingFileName= null; 

        existingFileName= "/mnt/sdcard/"+rid+".doc"; 
        int bytesRead, bytesAvailable, bufferSize; 
        byte[] buffer; 
        int maxBufferSize = Integer.MAX_VALUE; 
        String responseFromServer = ""; 


       url = new URL("http://10.66.51.241/mywcf/Service.svc/Service/uploadMyDoc");    

        try 
        { 
        //------------------ CLIENT REQUEST 
        FileInputStream fileInputStream = new FileInputStream(new File(existingFileName)); 

        // Open a HTTP connection to the URL 
        conn = (HttpURLConnection) url.openConnection(); 
        // Allow Inputs 
        conn.setDoInput(true); 
        // Allow Outputs 
        conn.setDoOutput(true); 
        // Don't use a cached copy. 
        conn.setUseCaches(false); 
        // Use a post method. 
        conn.setRequestMethod("POST"); 
        conn.setRequestProperty("Connection", "Keep-Alive"); 
        conn.setRequestProperty("Content-Type", "application/stream"); 
        dos = new DataOutputStream(conn.getOutputStream()); 
        // dos.writeBytes(twoHyphens + boundary + lineEnd); 
        //dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + existingFileName + "\"" + lineEnd); 
        // dos.writeBytes(lineEnd); 
        // create a buffer of maximum size 
        bytesAvailable = fileInputStream.available(); 
        bufferSize = Math.min(bytesAvailable, maxBufferSize); 
        buffer = new byte[bufferSize]; 
        // read file and write it into form... 
        bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
        while (bytesRead > 0) 
        { 
         dos.write(buffer, 0, bufferSize); 
         bytesAvailable = fileInputStream.available(); 
         bufferSize = Math.min(bytesAvailable, maxBufferSize); 
         bytesRead = fileInputStream.read(buffer, 0, bufferSize); 

        } 
        // send multipart form data necesssary after file data... 
        dos.writeBytes(lineEnd); 


        // close streams 
        Log.e("Debug",twoHyphens + boundary + twoHyphens + lineEnd); 
        fileInputStream.close(); 
        dos.flush(); 
        dos.close(); 
        } 
        catch (MalformedURLException ex) 
        { 
         Log.e("Debug", "error: " + ex.getMessage(), ex); 
        } 
        catch (IOException ioe) 
        { 
         Log.e("Debug", "error: " + ioe.getMessage(), ioe); 
        } 
        //------------------ read the SERVER RESPONSE 
        try { 
          inStream = new DataInputStream (conn.getInputStream()); 
          String str; 

          while ((str = inStream.readLine()) != null) 
          { 
           Log.e("Debug","Server Response "+str); 
           statuss.setText(str); 
          } 
          inStream.close(); 

        } 
        catch (IOException ioex){ 
         Log.e("Debug", "error: " + ioex.getMessage(), ioex); 
        } 


     } 

.net छोर पर एक WCF विधि है जो धारा प्राप्त करता है बनाएँ। धन्यवाद।