2016-11-09 1 views
-2

나는 안드로이드를 처음 접하기 때문에 어떤 파일을 서버에 올리기위한 좋은 튜토리얼을 얻지 못했다. 파일을 서버에 업로드하는 좋은 지침서를 제공해주십시오. 파일 크기는 any 여야하며 업로드 비율을 추적하는 진행 대화 상자가 필요합니다. 나는 파일 업로드뿐만 아니라 이미지 또는 비디오에 대한 간단하고 좋은 튜토리얼이 필요합니다.안드로이드 어떤 파일을 서버에 업로드

답변

0

다음은 파일을 업로드하는 동안 서버에 파일을 업로드하고 진행률 대화 상자를 표시하는 클래스의 예입니다.

public class UploadToServer extends Activity { 

TextView messageText; 
Button uploadButton; 
int serverResponseCode = 0; 
ProgressDialog dialog = null; 

String upLoadServerUri = null; 

/********** File Path *************/ 
final String uploadFilePath = "/mnt/sdcard/service_lifecycle.png"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_upload_to_server); 

    uploadButton = (Button)findViewById(R.id.uploadButton); 
    messageText = (TextView)findViewById(R.id.messageText); 

    messageText.setText("Uploading file path :- '/mnt/sdcard/"+uploadFileName+"'"); 

    /************* Php script path ****************/ 
    upLoadServerUri = "http://www.androidexample.com/media/UploadToServer.php"; 

    uploadButton.setOnClickListener(new OnClickListener() {    
     @Override 
     public void onClick(View v) { 

      dialog = ProgressDialog.show(UploadToServer.this, "", "Uploading file...", true); 

      new Thread(new Runnable() { 
        public void run() { 
         runOnUiThread(new Runnable() { 
           public void run() { 
            messageText.setText("uploading started....."); 
           } 
          });      

         uploadFile(uploadFilePath); 

        } 
        }).start();   
      } 
     }); 
} 

public int uploadFile(String sourceFileUri) { 


     String fileName = sourceFileUri; 

     HttpURLConnection conn = null; 
     DataOutputStream dos = null; 
     String lineEnd = "\r\n"; 
     String twoHyphens = "--"; 
     String boundary = "*****"; 
     int bytesRead, bytesAvailable, bufferSize; 
     byte[] buffer; 
     int maxBufferSize = 1 * 1024 * 1024; 
     File sourceFile = new File(sourceFileUri); 

     if (!sourceFile.isFile()) { 

      dialog.dismiss(); 

      Log.e("uploadFile", "Source File not exist :" 
           +uploadFilePath + "" + uploadFileName); 

      runOnUiThread(new Runnable() { 
       public void run() { 
        messageText.setText("Source File not exist :" 
          +uploadFilePath + "" + uploadFileName); 
       } 
      }); 

      return 0; 

     } 
     else 
     { 
      try { 

       // open a URL connection to the Servlet 
       FileInputStream fileInputStream = new FileInputStream(sourceFile); 
       URL url = new URL(upLoadServerUri); 

       // Open a HTTP connection to the URL 
       conn = (HttpURLConnection) url.openConnection(); 
       conn.setDoInput(true); // Allow Inputs 
       conn.setDoOutput(true); // Allow Outputs 
       conn.setUseCaches(false); // Don't use a Cached Copy 
       conn.setRequestMethod("POST"); 
       conn.setRequestProperty("Connection", "Keep-Alive"); 
       conn.setRequestProperty("ENCTYPE", "multipart/form-data"); 
       conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 
       conn.setRequestProperty("uploaded_file", fileName); 

       dos = new DataOutputStream(conn.getOutputStream()); 

       dos.writeBytes(twoHyphens + boundary + lineEnd); 
       dos.writeBytes("Content-Disposition: form-data; name="uploaded_file";filename="" 
             + fileName + """ + 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); 
       dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

       // Responses from the server (code and message) 
       serverResponseCode = conn.getResponseCode(); 
       String serverResponseMessage = conn.getResponseMessage(); 

       Log.i("uploadFile", "HTTP Response is : " 
         + serverResponseMessage + ": " + serverResponseCode); 

       if(serverResponseCode == 200){ 

        runOnUiThread(new Runnable() { 
         public void run() { 

          String msg = "File Upload Completed.\n\n See uploaded file here : \n\n" 
              +" http://www.androidexample.com/media/uploads/" 
              +uploadFileName; 

          messageText.setText(msg); 
          Toast.makeText(UploadToServer.this, "File Upload Complete.", 
             Toast.LENGTH_SHORT).show(); 
         } 
        });     
       }  

       //close the streams // 
       fileInputStream.close(); 
       dos.flush(); 
       dos.close(); 

      } catch (MalformedURLException ex) { 

       dialog.dismiss(); 
       ex.printStackTrace(); 

       runOnUiThread(new Runnable() { 
        public void run() { 
         messageText.setText("MalformedURLException Exception : check script url."); 
         Toast.makeText(UploadToServer.this, "MalformedURLException", 
                  Toast.LENGTH_SHORT).show(); 
        } 
       }); 

       Log.e("Upload file to server", "error: " + ex.getMessage(), ex); 
      } catch (Exception e) { 

       dialog.dismiss(); 
       e.printStackTrace(); 

       runOnUiThread(new Runnable() { 
        public void run() { 
         messageText.setText("Got Exception : see logcat "); 
         Toast.makeText(UploadToServer.this, "Got Exception : see logcat ", 
           Toast.LENGTH_SHORT).show(); 
        } 
       }); 
       Log.e("Upload file to server Exception", "Exception : " 
               + e.getMessage(), e); 
      } 
      dialog.dismiss();  
      return serverResponseCode; 

     } // End else block 
    } 
} 

체크 아웃 전체 소스 코드는 여기 Upload File To Server

편집 :

선택 갤러리에서 이미지와 얻는 것은 경로입니다.

만들기 Intent

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("image/*"); 
startActivityForResult(intent, 0); 

startActivityForResult 포착 이미지의 경로를 가져올 수 및 서버에 업로드 onActivityResult을 정의합니다. 여기 Selected Image and Its Real Path

+0

미리 정의 된 파일 업로드 sdcard에서 선택하고 동일한 확장자를 사용하여 서버에 업로드 –

+0

업데이트 된 대답을 확인하여 sdcard에서 파일을 선택하고 서버에 업로드 할 경로를 얻습니다. –

0

@Override 
protected void onActivityResult(int reqCode, int resCode, Intent data) { 
    if(resCode == Activity.RESULT_OK && data != null) { 

     // get file path of picked image and call upoadFile(uploadFilePath) method to upload it 
    } 
} 

체크 아웃 전체 소스 코드는 전송을 원하거나 가장 좋은 방법 중 하나가 개조 라이브러리로 사용하는 서버와 데이터를 수신합니다. 작업은 매우 간단하며 문서 양식 here을 사용할 수 있습니다. 나는 그것이 당신을 위해 일할 수 있기를 바랍니다.

관련 문제