从Django InMemoryUploadedFile解析pdf

时间:2016-07-10 16:59:23

标签: python django pdf

使用Django rest_framework收到pdf文件。我尝试了几种方法来解析传入文件中的内容。

  

curl -vX POST http://127.0.0.1:8000/documents/ -d @ 10_CSS \(1).pdf --header“Content-Type:application / pdf”--header“Content-Disposition:attachment; filename = 10_css.pdf”

def create(self, request):        
    file_ = request.FILES['file'] 

    parser = PDFParser(file_)     
    document = PDFDocument(parser)
  

PDFSyntaxError:否/ Root对象! - 这真的是PDF吗?

def create(self, request):        
    file_ = request.FILES['file'] 

    parser = PDFParser(file_.read())     
    document = PDFDocument(parser)
  

AttributeError:'str'对象没有属性'seek'

def create(self, request):        
    utf8_file = codecs.EncodedFile(request.FILES['file'], "utf-8")
    with open('/tmp/whatever.pdf', 'wb+') as destination:         
        for chunk in request.FILES['file'].chunks():              
            destination.write(chunk)                              

    file_ = open('/tmp/whatever.pdf', 'rb')                       
    parser = PDFParser(file_)                                     
    document = PDFDocument(parser)                                
  

PDFSyntaxError:否/ Root对象! - 这真的是PDF吗?

我尝试了几个结果相同的pdf文件。当我尝试解析pdf文件然后将其发送到我的应用程序之前,它解析得很好。 **如何从InMemoryUploadedFile解析pdf文件?

1 个答案:

答案 0 :(得分:0)

我猜你正在使用:

parser_classes = (FileUploadParser,)

在这种情况下,您的标题(--header“Content-Disposition:attachment; filename = 10_css.pdf”)包含在文件中。

我建议您使用MultiPartParser,不要发送Content-Disposition标头。

More informations