2017-12-29 4 views
-2

Ich möchte die Medien (Bild oder Dokument, entweder im PDF-oder DOCX-Format) Datei aus dem internen Speicher und auf den Server hochladen und zeigen auch die Miniaturansicht der Mediendatei.Wie wähle ich Dokumente und Bilddateien aus dem internen Speicher und lade sie auf den Server hoch?

+1

Warum verwenden Sie Google nicht für Ihre Frage? –

+0

'pdf oder docx formate) Datei von der Galerie' ??? Sie sind in "der Galerie"? – greenapps

+0

bedeutet, wählen Sie aus dem internen Speicher –

Antwort

0

Dieser Code würde helfen, die Medien (Bild oder Dokument, entweder im PDF- oder im docx-Format) aus dem internen Speicher hochzuladen und auf den Server hochzuladen.

für die Datei aus dem internen wählen:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(resultCode == Activity.RESULT_OK){ 
      if(requestCode == PICK_FILE_REQUEST){ 
       if(data == null){ 
        //no data present 
        return; 
       } 


       Uri selectedFileUri = data.getData(); 
       selectedFilePath = FilePath.getPath(this,selectedFileUri); 
       Log.i(TAG,"Selected File Path:" + selectedFilePath); 

       if(selectedFilePath != null && !selectedFilePath.equals("")){ 
        tvFileName.setText(selectedFilePath); 
       }else{ 
        Toast.makeText(this,"Cannot upload file to server",Toast.LENGTH_SHORT).show(); 
       } 
      } 
     } 
    } 

Laden

public int uploadFile(final String selectedFilePath){ 

     int serverResponseCode = 0; 

     HttpURLConnection connection; 
     DataOutputStream dataOutputStream; 
     String lineEnd = "\r\n"; 
     String twoHyphens = "--"; 
     String boundary = "*****"; 


     int bytesRead,bytesAvailable,bufferSize; 
     byte[] buffer; 
     int maxBufferSize = 1 * 1024 * 1024; 
     File selectedFile = new File(selectedFilePath); 


     String[] parts = selectedFilePath.split("/"); 
     final String fileName = parts[parts.length-1]; 

     if (!selectedFile.isFile()){ 
      dialog.dismiss(); 

      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        tvFileName.setText("Source File Doesn't Exist: " + selectedFilePath); 
       } 
      }); 
      return 0; 
     }else{ 
      try{ 
       FileInputStream fileInputStream = new FileInputStream(selectedFile); 
       URL url = new URL(SERVER_URL); 
       connection = (HttpURLConnection) url.openConnection(); 
       connection.setDoInput(true);//Allow Inputs 
       connection.setDoOutput(true);//Allow Outputs 
       connection.setUseCaches(false);//Don't use a cached Copy 
       connection.setRequestMethod("POST"); 
       connection.setRequestProperty("Connection", "Keep-Alive"); 
       connection.setRequestProperty("ENCTYPE", "multipart/form-data"); 
       connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 
       connection.setRequestProperty("uploaded_file",selectedFilePath); 

       //creating new dataoutputstream 
       dataOutputStream = new DataOutputStream(connection.getOutputStream()); 

       //writing bytes to data outputstream 
       dataOutputStream.writeBytes(twoHyphens + boundary + lineEnd); 
       dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\"" 
         + selectedFilePath + "\"" + lineEnd); 

       dataOutputStream.writeBytes(lineEnd); 

       //returns no. of bytes present in fileInputStream 
       bytesAvailable = fileInputStream.available(); 
       //selecting the buffer size as minimum of available bytes or 1 MB 
       bufferSize = Math.min(bytesAvailable,maxBufferSize); 
       //setting the buffer as byte array of size of bufferSize 
       buffer = new byte[bufferSize]; 

       //reads bytes from FileInputStream(from 0th index of buffer to buffersize) 
       bytesRead = fileInputStream.read(buffer,0,bufferSize); 

       //loop repeats till bytesRead = -1, i.e., no bytes are left to read 
       while (bytesRead > 0){ 
        //write the bytes read from inputstream 
        dataOutputStream.write(buffer,0,bufferSize); 
        bytesAvailable = fileInputStream.available(); 
        bufferSize = Math.min(bytesAvailable,maxBufferSize); 
        bytesRead = fileInputStream.read(buffer,0,bufferSize); 
       } 

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

       serverResponseCode = connection.getResponseCode(); 
       String serverResponseMessage = connection.getResponseMessage(); 

       Log.i(TAG, "Server Response is: " + serverResponseMessage + ": " + serverResponseCode); 

       //response code of 200 indicates the server status OK 
       if(serverResponseCode == 200){ 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          tvFileName.setText("File Upload completed.\n\n You can see the uploaded file here: \n\n" + "http://coderefer.com/extras/uploads/"+ fileName); 
         } 
        }); 
       } 

       //closing the input and output streams 
       fileInputStream.close(); 
       dataOutputStream.flush(); 
       dataOutputStream.close(); 



      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         Toast.makeText(NewClassPdf.this,"File Not Found",Toast.LENGTH_SHORT).show(); 
        } 
       }); 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
       Toast.makeText(NewClassPdf.this, "URL error!", Toast.LENGTH_SHORT).show(); 

      } catch (IOException e) { 
       e.printStackTrace(); 
       Toast.makeText(NewClassPdf.this, "Cannot Read/Write File!", Toast.LENGTH_SHORT).show(); 
      } 
      dialog.dismiss(); 
      return serverResponseCode; 
     } 

    } 
die Datei zum Server:

Intent intent = new Intent(); 
     //sets the select file to all types of files 
     intent.setType("*/*"); 
     //allows to select data and return it 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     //starts new activity to select file and return data 
     startActivityForResult(Intent.createChooser(intent,"Choose File to Upload.."),PICK_FILE_REQUEST); 

die Datei ab,

Dieser Code hilft mir, die Datei auf den Server (alle Dateien) hochzuladen.

Verwandte Themen