2011-01-06 15 views
5

Compré un sitio web donde se aloja en un servidor Linux que comparte una dirección IP mediante cpanel. El problema es que ahora quiero usar este código para subir un archivo a mi sitio. Cada vez que uso la dirección del sitio como www.site, obtendré una excepción que dice que la URL está mal formada. Cuando uso la dirección IP (ya que este es un servidor compartido), no puedo encontrar mi código php ya que no sé cómo vincular mi dirección.Android, http: cómo subir un archivo a un sitio alojado en un servidor compartido?

¿Alguien ... alguien sabe cómo vincularme a mi sitio, solo para que pueda subir un archivo xml? Realmente necesito ayuda aquí .......

Cualquier ayuda sería muy apreciada, ya que no tengo ningún conocimiento en materia de redes.

HttpURLConnection connection = null; 
    DataOutputStream outputStream = null; 
    DataInputStream inputStream = null; 
    String pathToOurFile = "/data/data/test.send/testsend.txt"; 
    String urlServer = "http://www.site.com/filefortransfer.php"; 
    String lineEnd = "\r\n"; 
    String twoHyphens = "--"; 
    String boundary = "*****"; 

    int bytesRead, bytesAvailable, bufferSize; 
    byte[] buffer; 
    int maxBufferSize = 1*1024*1024; 

    try 
    { 
    FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile)); 

    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=\"uploadedfile\";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) 
    String serverResponseCode = Integer.toString(connection.getResponseCode()); 
    String serverResponseMessage = connection.getResponseMessage(); 

    fileInputStream.close(); 
    outputStream.flush(); 
    outputStream.close(); 

    } 
    catch (Exception ex) 
    { 
     Log.e("MediaPlayer", "error: " + ex.getMessage(), ex); 
    } 
    } 

Respuesta

1

En Android, es preferible que las redes HTTP más complejas usen la clase HttpClient.

Aquí es un ejemplo de carga de archivos de varias partes: http://rapidandroid.org/wiki/HttpUpload

+0

i; he intentado poner el código y en los httpcomponents Apache, el cliente y el núcleo, pero me estoy poniendo las Los org.apache.james tipo. mime4j.message.SingleBody no se puede resolver. Se hace referencia indirectamente desde archivos .class requeridos en el área del paquete. ¿Cómo puedo solucionar esto? Estoy trabajando con el android en eclipse y he intentado buscar una solución pero no puedo obtener ninguna. – Cid

+0

resolvió que al agregar la biblioteca org.apache.james.mime4j a mi referencia – Cid

+0

surgió un nuevo problema. El registro salió mostrando este problema, java.lang.noclassdeffounderror: org.apache.http.entity.mime, y tengo las bibliotecas, ¿qué pasa? – Cid

Cuestiones relacionadas