2016-06-20 19 views
0

PHPを使用してAndroidからサーバーにファイルをアップロードするなど、誰でも自分のコード作業を手助けできますか?私はさまざまな方法で試しましたが、うまくいかないでしょう。私はHTTP Response 200を取得しますが、ファイルはサーバーにアップロードされません。PHP経由でAndroidからサーバーにファイルをアップロードする

私は、アップロードのために使用しているPHPスクリプトは次のとおりです。

<?php 
$uploaddir = 'uploads/'; 
$uploadfile = $uploaddir . basename($_FILES['uploaded_file']['name']); 
if (move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $uploadfile)) { 
    echo "File is valid, and was successfully uploaded.\n"; 
} else { 
    echo "Possible file upload attack!\n"; 
} 
echo 'Here is some more debugging info:'; 
print_r($_FILES); 
?> 

私もHttpmime 4.0からマルチパートを使用してみましたが、それ文句を言わない仕事。

public void uploadFile(String path) 
{ 
    File file = new File(path); 
    try { 
     HttpClient client = new DefaultHttpClient(); 
     String postURL = upLoadServerUri; 
     HttpPost post = new HttpPost(postURL); 
     FileBody bin = new FileBody(file); 
     MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
     reqEntity.addPart("uploaded_file", bin); 
     post.setEntity(reqEntity); 
     HttpResponse response = client.execute(post); 
     HttpEntity resEntity = response.getEntity(); 
     if (resEntity != null) { 
      Log.i("RESPONSE Wahaj: ","Code : "+ EntityUtils.toString(resEntity)); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

答えて

0
public class Helpher extends AsyncTask<String, Void, String> { 
    Context context; 
    JSONObject json; 
    ProgressDialog dialog; 
    int serverResponseCode = 0; 
    DataOutputStream dos = null; 
    FileInputStream fis = null; 
    BufferedReader br = null; 


    public Helpher(Context context) { 
     this.context = context; 
    } 

    protected void onPreExecute() { 

     dialog = ProgressDialog.show(Main2Activity.this, "ProgressDialog", "Wait!"); 
    } 

    @Override 
    protected String doInBackground(String... arg0) { 

     try { 
      File f = new File(arg0[0]); 
      URL url = new URL("http://localhost:8888/imageupload.php"); 
      int bytesRead; 
      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setDoOutput(true); 
      conn.setDoInput(true); 
      conn.setUseCaches(false); 
      conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); 

      String contentDisposition = "Content-Disposition: form-data; name=\"keyValueForFile\"; filename=\"" 
        + f.getName() + "\""; 
      String contentType = "Content-Type: application/octet-stream"; 


      dos = new DataOutputStream(conn.getOutputStream()); 
      fis = new FileInputStream(f); 


      dos.writeBytes(SPACER + BOUNDARY + NEW_LINE); 
      dos.writeBytes(contentDisposition + NEW_LINE); 
      dos.writeBytes(contentType + NEW_LINE); 
      dos.writeBytes(NEW_LINE); 
      byte[] buffer = new byte[MAX_BUFFER_SIZE]; 
      while ((bytesRead = fis.read(buffer)) != -1) { 
       dos.write(buffer, 0, bytesRead); 
      } 
      dos.writeBytes(NEW_LINE); 
      dos.writeBytes(SPACER + BOUNDARY + SPACER); 
      dos.flush(); 

      int responseCode = conn.getResponseCode(); 
      if (responseCode != 200) { 
       Log.w(TAG, 
         responseCode + " Error: " + conn.getResponseMessage()); 
       return null; 
      } 

      br = new BufferedReader(
        new InputStreamReader(conn.getInputStream())); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = br.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      Log.d(TAG, "Sucessfully uploaded " + f.getName()); 

     } catch (MalformedURLException e) { 
     } catch (IOException e) { 
     } finally { 
      try { 
       dos.close(); 
       if (fis != null) 
        fis.close(); 
       if (br != null) 
        br.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return String.valueOf(serverResponseCode); 
    } 


    @Override 
    protected void onPostExecute(String result) { 
     dialog.dismiss(); 

    } 

} 

これは、Androidからのアップロードのイメージのために使用さAsyncTask "Helpher" クラスです。このクラスを呼び出すには、以下のような構文を使用します。

new Main2Activity.Helpher(this).execute(fileUri.getPath()); 

ここでfileUri.getPath()ローカルイメージの位置。

関連する問題