ホームページ > バックエンド開発 > PHPチュートリアル > Android の画像は PHP サーバー インスタンスに非同期でアップロードされます

Android の画像は PHP サーバー インスタンスに非同期でアップロードされます

WBOY
リリース: 2016-06-20 12:41:42
オリジナル
1001 人が閲覧しました

背景

インターネット上の Java サーバーにアップロードされているものがたくさんあります。長い間検索した結果、php にアップロードされたものを見つけました。 POSTすることを考えました。早速、上記のコードを見てみましょう。

PHP コード

PHP コード

  1. $target_path = "./upload/" ; //ファイルディレクトリを受信します
  2. $target_path = $target_path .basename ( $_FILES [ 'uploadedfile' ][ 'name' ]); 🎜>
  3. if (move_uploaded_file( $_FILES [ 'uploadedfile' ][ 'tmp_name' ], $target_path )) {
  4. echo "ファイル " . name' ]). " アップロードされました" ;
  5. echo "ファイルのアップロード中にエラーが発生しました。もう一度お試しください。" . 'エラー' ];
  6. }
  7. ?>
  8. Android コード
アップロードされたメインコード:

Java コード

  1. private void UploadFile(String UploadUrl)
  2. {
  3. 文字列 end = "rn" ;
  4. 文字列 twoHyphens = "--" ;
  5. 文字列境界 = "******" ;
  6. {
  7. URL url = 新しい URL(uploadUrl); HttpURLConnection httpURLConnection = (HttpURLConnection) url
  8. .openConnection(); //http connection
  9. // 各送信のストリーム サイズを設定すると、メモリ不足による電話のクラッシュを効果的に防ぐことができます
  10. httpURLConnection.setChunkedStreamingMode( 128 * 1024 ) // 128K
  11. // 入力ストリームと出力ストリームを許可します
  12. httpURL Connection.setDoInput( true ); 🎜>
  13. httpURLConnection.setDoOutput( true );
  14. httpURLConnection.setUseCaches( false );
  15. // POST メソッドを使用します
  16. httpURLConnection.setRequestMethod( "POST" );
  17. httpURLConnection.setRequestProperty( "Connection" , "Keep-Alive" ); // 接続を常に維持します
  18. httpURLConnection.setRequestProperty( "Charset" , "UTF-8" ); //エンコーディング
  19. httpURLConnection.setRequestProperty( "Content-Type" ,
  20. "multipart/form-data;boundary=" +boundary); //POST は過去のエンコーディングを渡します
  21. DataOutputStream dos = new DataOutputStream(
  22. httpURLConnection.getOutputStream()) //出力ストリーム
  23. dos.writeBytes(twoHyphens + border + end); >
  24. dos.writeBytes( "Content-Disposition: form-data; name="uploadedfile"; filename=""
  25. + srcPath.substring(srcPath.lastIndexOf( "/" ) + 1 )
  26. + """
  27. + end);
  28. dos.writeBytes(end);
  29. FileInputStream fis = new FileInputStream( src Path); // ファイル入力ストリーム、メモリに書き込まれます
  30. byte [] バッファ = 新しいバイト [ 8192 ] // 8k
  31. int count = 0; // ファイル
  32. を読み取ります while ((count = fis.read(buffer)) != - 1 )
  33. {
  34. dos.write(buffer, 0, count) ;
  35. }
  36. fis.close();
  37. dos.writeBytes(end);
  38. dos.writeBytes(twoHyphens + 境界 + twoHyphens + end) ;
  39. dos.flush();
  40. InputStream is = httpURLConnection.getInputStream(); //http 入力、返された結果を取得します
  41. InputStreamReader isr = new InputStreamReader(is, "utf-8" );
  42. BufferedReader br = new BufferedReader(isr);
  43. 文字列結果 = br.readLine(); 🎜>
  44. Toast.makeText( this , result, Toast.LENGTH_LONG).show(); // 結果を出力
  45. dos.close(); ;
  46. } catch (Exception e)
  47. { .getMessage ()); AsyncTask を使用しましょう~
  48. 非同期タスクportal: http://www.cnblogs.com/yydcdut/p/3707960.html
  49. このクラスにアップロード操作を入れます doInBackground には、どれだけアップロードされたかを示す ProgressDialog を含めることができます:
  50. Java コード
  51. // ファイルを読み取ります
  52. bytesRead = fileInputStream.read(buffer, 0,bufferSize);
  53. while (bytesRead > 0 ) {
OutputStream.write(buffer, 0,bufferSize);

length + =bufferSize

progress = ( int ) ((長さ * 100 ) / totalSize);

bytesAva ilable = fileInputStream .available(); Math.min(bytesAvailable, maxBufferSize);

bytesRead(buffer, 0,bufferSize);
  1. OutputStream.writeBytes(lineEnd); >
  2. また、権限にも注意してください:
  3. XML/HTML コード
  4. < uses-permission android:name = "android .permission.インターネット" />
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート