0

お話を伺いながら現在調査中です。いくつかの素晴らしい洞察を期待して、この質問をここに置きます。これが私の質問です:

Web サーバーからファイルをダウンロードしてアプリに表示し、オフラインで使用できる Android アプリケーションを開発しています。

アプリがhttps://www.mydomain.com/abc/xyz.pngにアクセスしてファイルをダウンロードする場合、同じ URL を公開しないようにするにはどうすればよいですか? つまり、ブラウザのアドレス バーにhttps://www.mydomain.com/abc/xyz.pngと入力すると、png ファイル以外の場所に移動します。

ここにはある種のラッパーが必要だと思いますが、私はこれらすべてに慣れておらず、すばやく習得しようとしています。

どんな助けでも大歓迎です。

価値があるのは、workbench 6.0 または phpMyAdmin のいずれかで mySql データベースを使用することです。

編集

最初の 2 つの応答に対する応答:

したがって、私の Android アプリのコードでは、ファイルをダウンロードして、次のような内部ストレージに保存します (ベース パスは、ファイルの Web ディレクトリに移動します)。

url = new URL(basePath + fileName);
URLConnection connection = url.openConnection();
int lenghtOfFile = connection.getContentLength();

inputStream = new BufferedInputStream(url.openStream());

outFile = new File(context.getFilesDir() + "/" + fileName);
fileStream = new FileOutputStream(outFile);

outputStream = new BufferedOutputStream(fileStream, DOWNLOAD_BUFFER_SIZE);

次のように変更されます。

url = new URL(basePath + "download_file.php" + "?key=hardcodedkey&file=" + fileName);
URLConnection connection = url.openConnection();
int lenghtOfFile = connection.getContentLength();

inputStream = new BufferedInputStream(url.openStream());

outFile = new File(context.getFilesDir() + "/" + fileName);
fileStream = new FileOutputStream(outFile);

outputStream = new BufferedOutputStream(fileStream, DOWNLOAD_BUFFER_SIZE);
4

2 に答える 2

0

簡単な方法は、シークレット パラメータとして特定のキーと、ダウンロードするイメージまたはファイルを使用して php スクリプトを呼び出すことです。

www.myweb.com/myfunction.php?pass=secretPassword&file=image.png

このキーは、アプリケーションからの呼び出しでハードコーディングされます。

次に、次のような方法で、パスワードが期待どおりのものであるかどうかを確認できます。

//hardcoded hashed pass with sha1, for example.
$myHashedPass = '40bd001563085fc35165329ea1ff5c5ecbdbbeef';

if(sha1($_GET['pass']) != $myHashedPass){
    die();
}

//download of file...

PHP アプリケーション内で、パスワードに応じてダウンロードを開始するかどうかを選択できます。

于 2013-08-21T09:20:35.790 に答える
0

ここにはいくつかのオプションがあります。

1.) 良くない -> .htaccess は特定のリファラーを制限します。たとえば、Android 以外のすべてです。

2.) より大きい -> GET var がパスと同じ場合、PHP ファイルを使用して画像を出力します。例えば

if (isset($_GET["pass"]) && $_GET["pass"]=="8h932mgks984jsolm9sjt4ms") {
    header('Content-type:image/png');
    include('/path/to/thePngFile.png');
} else die("nothing to see here..");
于 2013-08-21T09:24:52.263 に答える