如何在Elm中上传文件(图像或Excel)?
似乎找不到任何示例。
即使使用本地代码,答案也可以。在Elm-Html
中看到了Data
,但似乎不支持文件和Blob。有什么解决方法?
如何在Elm中上传文件(图像或Excel)?
似乎找不到任何示例。
即使使用本地代码,答案也可以。在Elm-Html
中看到了Data
,但似乎不支持文件和Blob。有什么解决方法?
我是MisterMetaphor所提及的库的作者,然而使用该库比他所解释的更容易。看一下我在示例中如何设置elm-package.json文件:https://github.com/simonh1000/file-reader/blob/master/example/elm-package.json - 只需添加"native-modules": true,
即可。
我撰写了一篇博客文章以支持发布0.18版本的代码并展示如何在Elm中进行S3上传等操作。
现在官方推荐的方式是 https://package.elm-lang.org/packages/elm/file/latest/,这个功能从 Elm 0.19 开始就有了。
现在官方的 Http 包也支持它了。下面是一个来自https://package.elm-lang.org/packages/elm/http/latest/Http#request的例子。
import File
import Http
type Msg = Uploaded (Result Http.Error ())
upload : File.File -> Cmd Msg
upload file =
Http.request
{ method = "PUT"
, headers = []
, url = "https://example.com/publish"
, body = Http.fileBody file
, expect = Http.expectWhatever Uploaded
, timeout = Nothing
, tracker = Nothing
}
exact-dependencies.json
文件。您可以最初从elm-package
构建您的项目时创建的elm-stuff
目录中获取此文件。然后,您可以像这样向exact-dependencies.json
文件添加对file-reader
软件包的引用:{
"evancz/elm-effects": "2.0.1",
"evancz/virtual-dom": "2.1.0",
"evancz/elm-http": "3.0.0",
"evancz/start-app": "2.0.2",
"evancz/elm-html": "4.0.2",
"elm-lang/core": "3.0.0",
"simonh1000/file-reader": "1.0.0"
}
您还需要在elm-package.json
文件中添加对file-reader
的引用:
{
"version": "1.0.0",
"summary": "helpful summary of your project, less than 80 characters",
"repository": "https://github.com/user/project.git",
"license": "BSD3",
"source-directories": [
"."
],
"exposed-modules": [],
"dependencies": {
"elm-lang/core": "3.0.0 <= v < 4.0.0",
"evancz/elm-effects": "2.0.1 <= v < 3.0.0",
"evancz/elm-html": "4.0.2 <= v < 5.0.0",
"evancz/elm-http": "3.0.0 <= v < 4.0.0",
"evancz/start-app": "2.0.2 <= v < 3.0.0",
"simonh1000/file-reader": "1.0.0 <= v < 2.0.0",
},
"elm-version": "0.16.0 <= v < 0.17.0"
}
接下来,你需要运行elm-package install,希望它能正常工作。