画像のアップロード

try {
	if($_FILES["file"]){
	move_uploaded_file($_FILES["file"]["tmp_name"], "./img/test.jpg");
	}
} catch(Exception $e){
	echo "error:", $e->getMessage().PHP_EOL;
}

?>

<body>
	<form action="" method="POST" enctype="multipart/form-data">
		<input type="file" name="file">
		<input type="submit" value="upload">
	</form>
</body>

amazon driveを自作しよう

機能としてはこんな感じか。
-ドキュメント、ビデオ、写真をアップロードできる。
-ドラック&ドロップでアップロードできる。
-ファイルサイズを表示する。
-アップロードファイルをURLで共有することができる。
-ファイルの中身をサムネイルで表示する。

URL共有、サムネイル表示あたりがわからん。

drop box, google drive, one drive, icloud

drop box

google drive

one drive

icloud

何気に、dropbox, google drive, one drive, icloud 全部使ってましたね。

ヤフーにも、Yahoo!ボックス というストレージサービスがあるらしいです。全然知りませんでした。

アマゾン drive

楽天はないみたい。。ストレージサービスつくりたいな。。

500GB 外付けHD

Buffalo ポータプルHDD
HD-PEU2

ハードディスク関連の仕事をしていた人から貰った。

クラウドあるから別にHDDいらないな。しかも、今1TBあるし。。

storage service

cloud storage serviceを比較してみる

まずboxから。

box
https://www.box.com/ja-jp/cloud-storage

5GBまで無料とある。¥1200/月で、100GBまで無料。
S3にしろ、サーバーコストがかかるはずなのに、どうやって無料にしているんだろうか?
hirokuか?

UIは普通。割とユーザー数が多そうな印象ではある。Sign inすると英語になる。

uploadすると、、、

無料のストレージサービス、いっぱいあるから、何が嬉しいのかよくわからんね。

activity_main xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffaa88"
    tools:context=".MainActivity">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/word"/>
        <EditText
            android:id="@+id/uriname"
            android:inputType="text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" >
        <Button
            adnroid:id="@+id/post"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="@string/post" />
        <Button
            android:id="@+id/browser"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="@string/browser" />
    </LinearLayout>

    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

mainActivity

package com.capital.connectmysql;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private UploadTask task;
    private TextView textView;
    private EditText editText;

    String url = "http://hpscript/android/pass_check.html";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = findViewById(R.id.uriname);

        Button post = findViewById(R.id.post);

        post.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                String param0 = editText.getText().toString();

                if(param0.length() != 0){
                    task = new UploadTask();
                    task.setListener(createListener());
                    task.execute(param0);
                }
            }
        });

        Button browser = findViewById(R.id.browser);
        browser.setOnClickListener(new View.OnClickListenr(){
            @Override
            public void onClick(View v){
                Uri uri = Uri.parse(url);
                Intent intent = new Intent(Intent.ACTION_VIEW,uri);
                startActivity(intent);

                textView.setText("");
            }
        });
        textView = findViewById(R.id.text_view);
    }

    @Override
    protected void onDestroy(){
        task.setListener(null);
        super.onDestory();
    }

    private UploadTask.Listener createListener(){
        return new UploadTask.Listener(){
            @Override
            public void onSuccess(String result){
                textView.setText(result);
            }
        };
    }
}
package com.capital.connectmysql;

import android.net.sip.SipAudioCall;
import android.os.AsyncTask;
import android.util.Log;

import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class UploadTask extends AsyncTask<String, Void, String> {

    private SipAudioCall.Listener listener;

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

        String urlSt = "http://hpscript.com/";

        HttpURLConnection con = null;
        String result = null;
        String word = "word="+params[0];

        try {
            URL url = new URL(urlSt);

            con = (HttpURLConnection) url.openConnection();

            con.setRequestMethod("POST");
            con.setInstanceFollowRedirects(false);
            con.setDoOutput(true);

            con.setReadTimeout(10000);
            con.setConnectTimeout(20000);

            con.connect();

            OutputStream out = null;
            try {
                out = con.getOutputStream();
                out.write( word.getBytes("UTF-8"));
                out.flush();
                Log.d("dubug", "flush");
            } catch (IOException e){
                e.printStackTrack();
                result = "POST送信エラー";
            } finally {
                if (out != null){
                    out.close();
                }
            }
            final int status = con.getResponseCode();
            if (status == HttpURLConnection.HTTP_OK){
                result = "HTTP_OK";
            } else {
                result = "status="+String.valueOf(status);
            }
        } catch(IOException e){
            e.printStackTrace();
        } finally {
            if (con != null){
                con.disconnect();
            }
        }
        return result;
    }

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

        if(listener != null){
            listener.onSuccess(result);
        }
    }

    void setListener(SipAudioCall.Listener listener){
        this.listener = listener;
    }

    interface Listener {
        void onSuccess(String result);
    }
}

Android Studioでdependencyを追加する。

file -> project structure を押す

dependency -> libraries dependency を選択する

dependenciesが追加される。

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'org.jdom:jdom2:2.0.6'
}