作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我最近开始使用 F# 和 Suave 为我大学的一个项目创建一个网站。我需要做的一件事是让用户通过网站上传文件,然后我将解析该文件。
我现在拥有的是
let post =
let ``process`` httpRequest =
use reader = File.OpenText httpRequest.files.Head.tempFilePath
// do parsing and save to database
request ``process``
在我的 HTML 中我有一个简单的表单
<form action="/parse" method="POST">
<div>
<input type="file" name="file">
</div>
<div>
<button>Send</button>
</div>
</form>
在通过 post
方法处理 POST 请求期间,我得到以下异常
[22:45:30 ERR] request failed
System.InvalidOperationException: The input list was empty.
at Microsoft.FSharp.Collections.FSharpList`1[T].get_Head () <0x41494340 + 0x0007b> in <filename unknown>:0
at Web+Parse+post@25.Invoke (Suave.HttpRequest httpRequest) <0x41493e10 + 0x0003b> in <filename unknown>:0
at Microsoft.FSharp.Core.FSharpFunc`2[T,TResult].InvokeFast[V] (Microsoft.FSharp.Core.FSharpFunc`2 func, Microsoft.FSharp.Core.T arg1, Microsoft.FSharp.Core.TResult arg2) <0x4143c6a0 + 0x00099> in <filename unknown>:0
at Web+Parse+post@39-4.Invoke (Suave.HttpContext context) <0x41493dc0 + 0x0002f> in <filename unknown>:0
at Suave.WebPart+bind@14-5[a,b].Invoke (Microsoft.FSharp.Core.FSharpOption`1 _arg1) <0x41472a10 + 0x00044> in <filename unknown>:0
at Microsoft.FSharp.Control.AsyncBuilderImpl+args@835-1[a,b].Invoke (a a) <0x41435c60 + 0x000af> in <filename unknown>:0
这意味着 httpRequest.files
列表中没有文件。
我无法找到有关如何访问已上传文件或文件是否已上传的任何信息。我用 Fiddler 检查了我的浏览器发送的 HTTP 请求的内容,我能看到的只有
file=myFile.txt
文件正在上传吗?我是否正确访问了它?
注意:我使用的是 Suave 2.0.0
最佳答案
好的,我找到了我缺少的东西。要发布文件,表单必须有这样的附加参数
<form action="/parse" method="POST" enctype="multipart/form-data">
这样,文件的内容将与内容部分中的 HTTP 请求一起发送。
关于http - 在 Suave 应用程序中上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41685686/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!