diff --git a/app.py b/app.py
index 6711be5..1468371 100644
--- a/app.py
+++ b/app.py
@@ -95,6 +95,12 @@
     upload_files = self.get_uploads()
     sys.stderr.write('upload: %r\n' % upload_files)
     blob_info = upload_files[0]
+    reader = blob_info.open()
+    try:
+      wifipacket.Packetize(reader).next()  # just check basic file header
+    except wifipacket.Error:
+      blob_info.delete()
+      raise
     self.redirect('/view/%s' % blob_info.key())
 
 
@@ -122,13 +128,8 @@
                                       filename=blob_info.filename,
                                       show_hosts=[], aliases={},
                                       show_fields=[])
-    try:
-      boxes = _Boxes(blob_info)
-    except ValueError as e:
-      self.response.set_status(500, 'Server error')
-      self.response.write('<pre>%s</pre>' % traceback.format_exc())
-      return
 
+    boxes = _Boxes(blob_info)
     cutoff = max(boxes.itervalues()) * 0.01
     cutboxes = [(b, n)
                 for b, n
@@ -236,6 +237,14 @@
       j = '%s(%s)' % (self.request.get('jsonp'), j)
     self.response.write(j)
 
+
+def Handle500(req, resp, exc):
+  resp.clear()
+  resp.headers['Content-type'] = 'text/plain'
+  resp.write(traceback.format_exc(exc))
+  resp.set_status(500)
+
+
 settings = dict(
     debug = 1,
 )
@@ -243,7 +252,10 @@
 wsgi_app = webapp2.WSGIApplication([
     (r'/', MainHandler),
     (r'/upload', UploadHandler),
+    (r'/download/([^/]+)$', DownloadHandler),
     (r'/view/([^/]+)$', ViewHandler),
     (r'/save/([^/]+)$', SaveHandler),
     (r'/json/([^/]+)$', JsonHandler),
 ], **settings)
+
+wsgi_app.error_handlers[500] = Handle500
diff --git a/wifipacket.py b/wifipacket.py
index 240ea13..08f9989 100755
--- a/wifipacket.py
+++ b/wifipacket.py
@@ -9,6 +9,18 @@
 import sys
 
 
+class Error(Exception):
+  pass
+
+
+class FileError(Error):
+  pass
+
+
+class PacketError(Error):
+  pass
+
+
 class Struct(dict):
   """Helper to allow accessing dict members using this.that notation."""
 
@@ -219,7 +231,7 @@
   elif struct.unpack('>I', magicbytes) == (TCPDUMP_MAGIC,):
     byteorder = '>'
   else:
-    raise ValueError('unexpected tcpdump magic %r' % magicbytes)
+    raise FileError('unexpected tcpdump magic %r' % magicbytes)
   (version_major, version_minor,
    unused_thiszone,
    unused_sigfigs,
@@ -227,9 +239,9 @@
    network) = struct.unpack(byteorder + 'HHiIII', stream.read(20))
   version = (version_major, version_minor)
   if version != TCPDUMP_VERSION:
-    raise ValueError('unexpected tcpdump version %r' % version)
+    raise FileError('unexpected tcpdump version %r' % version)
   if network != LINKTYPE_IEEE802_11_RADIOTAP:
-    raise ValueError('unexpected tcpdump network type %r' % network)
+    raise FileError('unexpected tcpdump network type %r' % network)
 
   last_ta = None
   last_ra = None
@@ -242,11 +254,11 @@
     (ts_sec, ts_usec,
      incl_len, orig_len) = struct.unpack(byteorder + 'IIII', pcaphdr)
     if incl_len > orig_len:
-      raise ValueError('packet incl_len(%d) > orig_len(%d): invalid'
-                       % (incl_len, orig_len))
+      raise FileError('packet incl_len(%d) > orig_len(%d): invalid'
+                      % (incl_len, orig_len))
     if incl_len > snaplen:
-      raise ValueError('packet incl_len(%d) > snaplen(%d): invalid'
-                       % (incl_len, snaplen))
+      raise FileError('packet incl_len(%d) > snaplen(%d): invalid'
+                      % (incl_len, snaplen))
 
     opt.pcap_secs = ts_sec + (ts_usec / 1e6)
 
@@ -261,7 +273,7 @@
     (it_version, unused_it_pad,
      it_len, it_present) = struct.unpack('<BBHI', radiotap[:8])
     if it_version != 0:
-      raise ValueError('unknown radiotap version %d' % it_version)
+      raise PacketError('unknown radiotap version %d' % it_version)
     frame = radiotap[it_len:]
     optbytes = radiotap[8:it_len]
 
