@@ -12,6 +12,7 @@ module Network.Wai.Parse
1212 , conduitRequestBody
1313 , lbsSink
1414 , tempFileSink
15+ , tempFileSinkOpts
1516 , Param
1617 , File
1718 , FileInfo (..)
@@ -76,10 +77,17 @@ lbsSink = fmap L.fromChunks CL.consume
7677
7778-- | Save uploaded files on disk as temporary files
7879tempFileSink :: MonadResource m => Sink S.ByteString m FilePath
79−tempFileSink = do
80+tempFileSink = tempFileSinkOpts getTemporaryDirectory "webenc.buf"
81+
82+-- | Same as 'tempFileSink', but use configurable temp folders and patterns.
83+tempFileSinkOpts :: MonadResource m
84+ => IO FilePath -- ^ get temporary directory
85+ -> String -- ^ filename pattern
86+ -> Sink S.ByteString m FilePath
87+tempFileSinkOpts getTmpDir pattern = do
8088 (key, (fp, h)) <- lift $ allocate (do
81− tempDir <- getTemporaryDirectory
82− openBinaryTempFile tempDir "webenc.buf") (\(_, h) -> hClose h)
89+ tempDir <- getTmpDir
90+ openBinaryTempFile tempDir pattern) (\(_, h) -> hClose h)
8391 _ <- lift $ register $ removeFile fp
8492 CB.sinkHandle h
8593 lift $ release key