English 中文(简体)
Django 传输上传文件
原标题:Django transfer uploaded file

我试图通过对讲表格上传文件,然后发送到API。

s 在此编码函数 :

#FYI, requestFile = request.FILES[ file ]
def EncodeFile(self, requestFile, fields = []):

    BOUNDARY    =  ----------boundary------ 
    CRLF        =  
 
    body        = []
    # Add the metadata about the upload first

    for param in fields:
        body.extend(
          [ --  + BOUNDARY,
            Content-Disposition: form-data; name="%s"  % param,
             ,
           fields[param],
           ])

    fileContent = requestFile.read()

    body.extend(
      [ --  + BOUNDARY,
        Content-Disposition: form-data; name="file"; filename="%s" 
       % requestFile.name,
       # The upload server determines the mime-type, no need to set it.
        Content-Type:   + requestFile.content_type,
         ,
       fileContent,
       ])

    # Finalize the form body
    body.extend([ --  + BOUNDARY +  -- ,   ])
    result =   multipart/form-data; boundary=%s  % BOUNDARY, CRLF.join(body)
    return result

问题在于当它到达“CRLF.join(body)”时, 它抱怨“ utf8 codec 可以在零位置解码 byte 0xff: 无效的开头字节 ” 。

与命令行完全相同的代码功能完美无瑕, 但请求文件实际上是一个文件路径, 而我正在读取内容前做一个打开( 请求文件, rb ) 的操作 。

我这辈子都想不出下一步要做什么了。 在过去10个小时左右的时间里,我一直在寻找答案。

最佳回答

显然,这行代码造成了问题:

 Content-Disposition: form-data; name="file"; filename="%s"  % requestFile.name,

正确的一行将改为:

 Content-Disposition: form-data; name="file"; filename="%s"  % smart_str(requestFile.name),
问题回答

您正在试图将数据解码成字符串, 且在合并函数上失败。 如果 Django 正在使用严格的模式试图解码数据, 它会丢出错误 。 ignore 模式会跳过这些字节, 这可以解释为什么它似乎在控制台工作 。

所以,您不想将响应对象转换成 Unicode 字符串。 您应该尝试调试哪个函数试图转换它, 并试图阻止它。 加入() 函数不应该尝试将其转换成 Unicode 。

要找到这样的问题, 您可以简化它来帮助找到根本原因 。 这对我在 Python shell 中有效( 但是在您的情况中它应该造成同样的错误 ) :

body = ["1", "xff"]
result =  multipart/form-data; boundary=%s  % BOUNDARY, CRLF.join(body)




相关问题
Can Django models use MySQL functions?

Is there a way to force Django models to pass a field to a MySQL function every time the model data is read or loaded? To clarify what I mean in SQL, I want the Django model to produce something like ...

An enterprise scheduler for python (like quartz)

I am looking for an enterprise tasks scheduler for python, like quartz is for Java. Requirements: Persistent: if the process restarts or the machine restarts, then all the jobs must stay there and ...

How to remove unique, then duplicate dictionaries in a list?

Given the following list that contains some duplicate and some unique dictionaries, what is the best method to remove unique dictionaries first, then reduce the duplicate dictionaries to single ...

What is suggested seed value to use with random.seed()?

Simple enough question: I m using python random module to generate random integers. I want to know what is the suggested value to use with the random.seed() function? Currently I am letting this ...

How can I make the PyDev editor selectively ignore errors?

I m using PyDev under Eclipse to write some Jython code. I ve got numerous instances where I need to do something like this: import com.work.project.component.client.Interface.ISubInterface as ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...

Pragmatically adding give-aways/freebies to an online store

Our business currently has an online store and recently we ve been offering free specials to our customers. Right now, we simply display the special and give the buyer a notice stating we will add the ...

Converting Dictionary to List? [duplicate]

I m trying to convert a Python dictionary into a Python list, in order to perform some calculations. #My dictionary dict = {} dict[ Capital ]="London" dict[ Food ]="Fish&Chips" dict[ 2012 ]="...

热门标签