将图像上传到php linux服务器

问题描述:

我想上传图像到服务器。我用http://katharnavas.blogspot.com/2009/10/upload-files-from-mobile.html的代码和其他方法,但手机有时会失败,而模拟机总是运行良好。你能帮我分析错误的原因以及我是否需要一些设置?谢谢。将图像上传到php linux服务器

private void upload3() 
{ 

    HttpURLConnection connection = null; 
    DataOutputStream outputStream = null; 
    DataInputStream inputStream = null; 

    String pathToOurFile = fileName; 
    Log.e("pathToOurFile",""+pathToOurFile); 

    String urlServer = urlStr; 
    String lineEnd = "\r\n"; 
    String twoHyphens = "--"; 
    String boundary = "*****"; 
    Log.e("URL Server",""+urlServer); 

    int bytesRead, bytesAvailable, bufferSize; 
    byte[] buffer; 
    int maxBufferSize = 1*1024*1024; 
    Log.e("maxBufferSize",""+maxBufferSize); 

    try 
    { 
     FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile)); 
     Log.e("FIS",""+fileInputStream); 
     URL url = new URL(urlServer); 
     connection = (HttpURLConnection) url.openConnection(); 



// Allow Inputs & Outputs 
      connection.setDoInput(true); 
      connection.setDoOutput(true); 
      connection.setUseCaches(false); 

     // Enable POST method 
     connection.setRequestMethod("POST"); 

     connection.setRequestProperty("Connection", "Keep-Alive"); 
     connection.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); 

     outputStream = new DataOutputStream(connection.getOutputStream()); 
     outputStream.writeBytes(twoHyphens + boundary + lineEnd); 
     outputStream.writeBytes("Content-Disposition: form-data; name=\"fileToUpload\";filename=\"" + pathToOurFile +"\"" + lineEnd); 
     outputStream.writeBytes(lineEnd); 

     bytesAvailable = fileInputStream.available(); 
     bufferSize = Math.min(bytesAvailable, maxBufferSize); 
     buffer = new byte[bufferSize]; 

     // Read file 
     bytesRead = fileInputStream.read(buffer, 0, bufferSize); 

     while (bytesRead > 0) 
     { 
      outputStream.write(buffer, 0, bufferSize); 
      bytesAvailable = fileInputStream.available(); 
      bufferSize = Math.min(bytesAvailable, maxBufferSize); 
      bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
     } 

     outputStream.writeBytes(lineEnd); 
     outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

     // Responses from the server (code and message) 
     Log.e("con",String.valueOf(connection.getDoOutput())); 


     String serverResponseMessage = connection.getResponseMessage(); 

     Log.e("serverResponseMessage",""+serverResponseMessage); 
     InputStream is = connection.getInputStream(); 

     int ch=-1; 
     StringBuffer b = new StringBuffer(); 
     while ((ch = is.read()) != -1) { 
      b.append((char) ch); 
     } 
     Log.d("log", "返回数据-"+b.toString().trim()); 
     fileInputStream.close(); 
     outputStream.flush(); 
     outputStream.close(); 
    } 
    catch (Exception ex) 
    { 
     Log.e("Exception Handling",""+ex); 
    } 
} 
+0

请发表你所得到的错误消息(S) – Jack

我设置超时,有时候需要重启手机,万物OK