c# - Processing HttpPostedFile.InputStream before saving using SaveAs() -
i need check if file compressed before saving it. have created following extension method check if file compressed using zipfile
(from sharplibzip library):
public static bool iscompressed(this httppostedfile postedfile) { stream stream = postedfile.inputstream; using (var zipfile = new zipfile(stream)) { return zipfile.testarchive(true); } }
the problem when call httppostedfile.saveas()
saves file 0kb:
if(uploadedfile.iscompressed()) { uploadedfile.inputstream.seek(0, seekorigin.begin); uploadedfile.saveas(physicalzipfile.fullname); }
this has using stream in iscompressed()
. have tried seeking beginning before saving problem remains.
could please explain problem here?
for stumbles upon this... here solution:
using ilspy decompiled assembly find zipfile.dispose()
closes stream. there other cleanup code wouldn't recommend not disposing of zipfile
instance.
on other hand, ziparchive
(system.io.compression
) has following overloaded constructor:
public ziparchive(stream stream, ziparchivemode mode, bool leaveopen)
setting leaveopen
true
leave stream open after instance has been correctly disposed.
Comments
Post a Comment