LoginSignup
1
0

フォームを作ってファイルをアップロードする

Last updated at Posted at 2018-02-28

HTMLでは、下記のようにするらしい

<form method="post" action="" enctype=""></form>

で、HTMLって結構便利だと思う。

なぜかといえば、HTML=WEBブラウザがデフォルトになっていて、
すでに窓が開き、そこにGUIがセットされている。

これ、すごいことだと思う。

もし同じことをVBAでやろうとしたら、
WINDOWSの窓を開いて、そこにフォームオブジェクトを貼り付けて
なんやら処理を書いたりしないといけない。

で、ますますHTML言語というものを覚えたくなった。

しかしなー、
HTMLといえば、ホームページを作るだけの言語だと思っていたが、
時代がどんどんすごくなっている感じ

で、これをPHPとかに渡したりするんだと思うが、
まだまだ覚えないといけないことがあって、さあ大変。

さて、他の言語で同じことをやろうとしたら、
どんなに大変なんだろうか?

それぞれどうなるの?

PYTHONの場合

JAVAの場合

RUBYの場合

おまけで

BASH

VBScript

1行ずつを串刺しにして、プログラミング勉強をしていると、
これは、外国語を全部やっている感じになってくる。

あまりにも、これは欲張りすぎではあるまいか

AI comment

HTMLでファイルをアップロードするには、formタグのenctype属性にmultipart/form-dataを指定します。これにより、ブラウザは、ファイルのアップロードを適切に処理することができます。

他の言語でも、同様にformタグのenctype属性にmultipart/form-dataを指定することで、ファイルをアップロードすることができます。

以下に、各言語の例を示します。

Python

import requests

def upload_file(file_path):
    url = "https://example.com/upload"
    files = {"file": open(file_path, "rb")}
    response = requests.post(url, files=files)
    return response.text

if __name__ == "__main__":
    file_path = "test.txt"
    result = upload_file(file_path)
    print(result)

Java

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class UploadFile {

    public static void main(String[] args) throws IOException {
        URL url = new URL("https://example.com/upload");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Content-Type", "multipart/form-data");

        File file = new File("test.txt");
        InputStream inputStream = new FileInputStream(file);
        byte[] bytes = new byte[inputStream.available()];
        inputStream.read(bytes);

        connection.setRequestProperty("Content-Length", String.valueOf(bytes.length));
        connection.setDoOutput(true);

        connection.getOutputStream().write(bytes);

        connection.getResponseCode();
    }
}

Ruby

require "net/http"

def upload_file(file_path)
    url = "https://example.com/upload"
    request = Net::HTTP::Post.new(url)
    request.set_form_data({ "file" => File.open(file_path, "rb") })
    response = Net::HTTP.start(url.host, url.port) {|http| http.request(request) }
    return response.body
end

if __name__ == "__main__":
    file_path = "test.txt"
    result = upload_file(file_path)
    print(result)

Bash

curl -F "file=@test.txt" https://example.com/upload

VBScript

Set objHTTP = CreateObject("MSXML2.XMLHTTP")
objHTTP.Open "POST", "https://example.com/upload", False
objHTTP.setRequestHeader "Content-Type", "multipart/form-data"
objHTTP.send("file=@test.txt")

wscript.echo objHTTP.responseText

HTMLやPHPのように、フォームタグでファイルのアップロードをサポートしている言語の場合は、比較的簡単にファイルをアップロードすることができます。一方、フォームタグでファイルのアップロードをサポートしていない言語の場合は、HTTPリクエストのヘッダーやボディにファイルを指定するなど、より複雑なコードを書く必要があります。

プログラミング言語を複数学ぶことは、大変なことですが、学習することで、さまざまな開発の選択肢が広がります。欲張りに学習を進めるのも良いでしょう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0