質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

1999閲覧

Android Post file PHP

aine

総合スコア12

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/10/10 07:34

android端末→PHP→データベースでファイルをアップロードしようとしています。
PHPのフォームからのファイル送信が成功したのですが、Androidからファイルを送信しようとすると、下記のPHPエラーが起こります。

Notice Undifined index: upfile
uploadfile.php(アップロード先ファイル名) on line 9

ファイルが選択されていません。
接続に成功しました。

PHPフォームからファイルを送る単体テストは成功しているため、PHP受信側には問題ないと思うのですが・・・。
お詳しい方、お知恵を貸していただけないでしょうか。

コードは下記になります。
Android側ではテスト用ファイルが作成できていることを確認済みです。
<Android>
import java.io.File;
import java.io.IOException;

import android.os.AsyncTask;

import com.squareup.okhttp.FormEncodingBuilder;
import com.squareup.okhttp.MediaType;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.RequestBody;
import com.squareup.okhttp.Response;
;

/**

  • Created by satomi on 15/10/10.

*/
public class OkHttpHandler extends AsyncTask<String, Void, String> {

public static final MediaType MEDIA_TYPE_CSV = MediaType.parse("text/csv; charset=utf-8"); OkHttpClient client = new OkHttpClient(); public OkHttpHandler(){ } @Override protected String doInBackground(String...params){ String filename = "GPS_log2.csv"; Request request = new Request.Builder() .url("http://example/php/uploadfile.php") .post(RequestBody.create(MEDIA_TYPE_CSV,filename)) .build(); try{ Response response = client.newCall(request).execute(); if(!response.isSuccessful()) throw new IOException("Unexpected code " + response.toString()); return response.body().string(); }catch(Exception e){ } return null; }

}

<PHP(サーバ受信側)>

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>sample</title> </head> <body> <p><?php

if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "/var/www/html/php/" . $_FILES["upfile"]["name"])) {
chmod("/var/www/html/php/" . $_FILES["upfile"]["name"], 0644);
echo $_FILES["upfile"]["name"] . "をアップロードしました。";
} else {
echo "ファイルをアップロードできません。";
}
} else {
echo "ファイルが選択されていません。";
}

try{
/**
* PDOのコンストラクタに指定する引数を正しく指定。
* また文字セットのutf8は、DSNで指定する。
* (文字セットをDSNで指定するやり方は、PHP5.3.5以前ではできません)
*/
$dbh = new PDO(
'mysql:dbname=GPS;host=tk2-218-18679.vs.sakura.ne.jp',
'root',
'',
array(
// 発生したエラーが例外としてスローされるよう指定
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_LOCAL_INFILE => true,
PDO::ATTR_EMULATE_PREPARES => true
)
);

/** * PDOへの接続に失敗した場合、エラーを例外としてスロー(投げる) */ if (!$dbh) { throw new RuntimeException('接続に失敗しました。'); } echo '接続に成功しました。'; $sql = 'LOAD DATA LOCAL INFILE "/var/www/html/php/GPS_log2.csv" INTO TABLE test FIELDS TERMINATED BY "," LINES TERMINATED BY "\n";'; // ユーザ入力を伴わないため、PDO::queryメソッドを使用 $dbh->query($sql);

} catch (PDOException $e) {
/**
* PDOで発生した例外の処理
/
echo 'PDO Error: ' . $e->getMessage();
} catch (Exception $e) {
/
*
* PDO以外で発生した例外の処理
*/
echo 'Error: ' . $e->getMessage();
}

?></p>

</body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

RequestBody.create(MEDIA_TYPE_CSV,filename))
上記でfilenameを第二引数にしていますが、ここではFileオブジェクトを渡す必要があるのではないでしょうか。

投稿2015/10/10 08:55

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問