การอ่านไฟล์ข้อความ

Elm:
การอ่านไฟล์ข้อความ

วิธีการ:

Elm มุ่งเน้นไปที่การพัฒนาเว็บด้านหน้าเป็นหลัก ซึ่งการเข้าถึงระบบไฟล์โดยตรงจะเป็นไปไม่ได้เนื่องจากเหตุผลด้านความปลอดภัย แทนที่จะเป็นการจัดการกับการอัพโหลดไฟล์จากผู้ใช้ นี่คือวิธีที่คุณสามารถอ่านไฟล์ข้อความที่ผู้ใช้เลือก:

module Main exposing (..)

import Browser
import File exposing (File)
import File.Selector as Selector
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)

type alias Model =
    { fileContent : String }

type Msg
    = SelectFile
    | ReceiveFileContent (Result () String)

init : Model
init =
    { fileContent = "" }

update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
    case msg of
        SelectFile ->
            (model, fileSelectCmd)

        ReceiveFileContent (Ok content) ->
            ({ model | fileContent = content }, Cmd.none)

        ReceiveFileContent (Err _) ->
            (model, Cmd.none)

fileSelectCmd : Cmd Msg
fileSelectCmd =
    File.select [ Selector.accept "text/*" ] { onDone = ReceiveFileContent }

view : Model -> Html Msg
view model =
    div []
        [ button [ onClick SelectFile ] [ text "เลือกไฟล์ข้อความ" ]
        , div [] [ text model.fileContent ]
        ]

main : Program () Model Msg
main =
    Browser.sandbox { init = init, update = update, view = view }

เรียกใช้โค้ดในเบราว์เซอร์ของคุณ คลิกที่ปุ่ม และเลือกไฟล์ข้อความ มันจะแสดงเนื้อหาในแอปพลิเคชั่น Elm ของคุณ

การศึกษาเพิ่มเติม

Elm ไม่สามารถอ่านไฟล์จากระบบไฟล์ของเซิร์ฟเวอร์โดยตรง - มันไม่ได้ถูกออกแบบมาสำหรับการดำเนินการที่ด้านเซิร์ฟเวอร์ แทนที่จะเป็นการจัดการการป้อนข้อมูลไฟล์ผ่าน API ไฟล์ในเบราว์เซอร์ โดยปกติจะถูกกระตุ้นโดยการกระทำของผู้ใช้ เช่น การเลือกไฟล์หรือการเคลื่อนย้ายไฟล์แบบลากและวาง มันเป็นมาตรการด้านความปลอดภัย

ในอดีตคุณอาจใช้ JavaScript และ Node.js เพื่ออ่านไฟล์ในด้านเซิร์ฟเวอร์ หรือใช้ XMLHttpRequest (XHR) สำหรับการอ่านข้างลูกค้าโดยไม่ต้องมีการโต้ตอบจากผู้ใช้ ซึ่งมีโมเดลความปลอดภัยและความสามารถที่แตกต่างกัน

โมดูล File และ File.Selector ใน Elm ทำให้การจัดการการอ่านไฟล์ในเบราว์เซอร์ค่อนข้างราบรื่น แต่จำไว้ว่าปรัชญา “ไม่มีผลข้างเคียง” ของ Elm นั่นหมายความว่าการอ่านไฟล์ถูกควบคุมอย่างเข้มงวด โดยต้องการการกระทำจากผู้ใช้อย่างชัดเจน นอกจากนี้การแยกวิเคราะห์และถอดรหัสเนื้อหาไฟล์ต้องระมัดระวังเพื่อให้ตรงกับการพิมพ์แบบแข็งของ Elm

ดูเพิ่มเติม