は、私は、フォームがあります。ハスケルのCGI Webプログラミングヘルプ
<div id="form">
<form action="upload.cgi" method="get" enctype="multipart/form-data">
<input type="file" name="file" id="file"/>
<input type="submit" value="Upload"/>
</form>
</div>
をしてupload.cgiは次のとおりです。
saveFile n =
do cont <- liftM fromJust $ getInputFPS "file"
let f = uploadDir ++ "/" ++ basename n
liftIO $ writeFile f cont
return $ paragraph << ("Saved")
uploadDir = "./uploadDirectory"
basename = reverse . takeWhile (`notElem` "/\\") . reverse
page t b = header << thetitle << t +++ body << b
myFromJust (Just a) = a
myFromJust Nothing = "gs"
cgiMain = do
mn <- getInputFilename "file"
h <- saveFile (myFromJust mn)
output . renderHtml $ page "Saved" h
main = runCGI $ handleErrors cgiMain
問題たびに、私が代わりに貯蓄のファイルをアップロードしようということですファイルの内容がアップロードされたファイル名である場合、gsというファイルが作成されます(myFromJust関数から、fromJustを使用してNothingを取得し、プログラムが失敗した場合)。
私はsomething.zipというファイルをアップロードしようとしますが、内容がsomething.zip(テキストとして書かれています)のgsというファイルを取得します。
私は問題は、getInputFilename "ファイル"またはgetInputFPSは何も返されないが、私は理由を知っていないと思う。
フォームやプログラムに問題はありますか?
? –
@Antal:おそらく、* getInputFileName *は[Network.CGI](http://www.haskell.org/haskellwiki/Practical_web_programming_in_Haskell)モジュールから来ます。 – frayser