Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Django上传的损坏图像_Python_Django - Fatal编程技术网

Python 从Django上传的损坏图像

Python 从Django上传的损坏图像,python,django,Python,Django,这是我在基于类的视图中定义的上传图像的代码 def _handle_uploaded_file(self, request): folder = settings.MEDIA_ROOT uploaded_filename = request.FILES['img_fl'].name BASE_PATH ='/home/admin1/Desktop/virtualenv-12.1.1/mapfied' # create the f

这是我在基于类的视图中定义的上传图像的代码

def _handle_uploaded_file(self, request):

        folder = settings.MEDIA_ROOT
        uploaded_filename = request.FILES['img_fl'].name

        BASE_PATH ='/home/admin1/Desktop/virtualenv-12.1.1/mapfied'
        # create the folder if it doesn't exist.
        try:
            os.mkdir(os.path.join(BASE_PATH, folder))
        except Exception as e:
            pass

        # save the uploaded file inside that folder.
        full_filename = os.path.join(BASE_PATH, folder, uploaded_filename)

        fd = open(full_filename, 'wb')

        file_content = ContentFile( request.FILES['img_fl'].read() )

        try:
            for chunk in file_content.chunks():
                fout.write(chunk)
            fout.close()
                html = "<html><body>SAVED</body></html>"
                print(html)
        except Exception as e:
            print(e)
def\u handle\u上传的文件(self,request):
文件夹=settings.MEDIA\u根目录
上传的文件名=请求.FILES['img\u fl'].name
基本路径='/home/admin1/Desktop/virtualenv-12.1.1/mapfied'
#如果文件夹不存在,请创建该文件夹。
尝试:
mkdir(os.path.join(基本路径,文件夹))
例外情况除外,如e:
通过
#将上载的文件保存在该文件夹中。
完整\u文件名=os.path.join(基本路径、文件夹、上载的\u文件名)
fd=打开(完整文件名“wb”)
file\u content=ContentFile(request.FILES['img\u fl'].read())
尝试:
对于文件\u content.chunks()中的块:
fout.write(块)
fout.close()
html=“已保存”
打印(html)
例外情况除外,如e:
打印(e)

图像文件正在以名称保存到正确的位置,但它已损坏。我无法找到确切原因,我是否在这里做错了什么

我想既然你想写一个二进制上传文件,你需要用可写二进制模式打开文件,实际上是wb+

您还可以使用“with”关键字进行一些整理;参见Django示例


旁注:如果要将文件持久化为文件字段(或派生类),可以提供“upload_to”函数,该函数返回文件存储位置的完整路径和文件名。这将让框架为您处理文件io。

我认为,既然您希望编写二进制上传,您需要使用可写二进制模式打开文件,该模式实际上是wb+

您还可以使用“with”关键字进行一些整理;参见Django示例


旁注:如果要将文件持久化为文件字段(或派生类),可以提供“upload_to”函数,该函数返回文件存储位置的完整路径和文件名。这将让框架为您处理文件io。

我认为,既然您希望编写二进制上传,您需要使用可写二进制模式打开文件,该模式实际上是wb+

您还可以使用“with”关键字进行一些整理;参见Django示例


旁注:如果要将文件持久化为文件字段(或派生类),可以提供“upload_to”函数,该函数返回文件存储位置的完整路径和文件名。这将让框架为您处理文件io。

我认为,既然您希望编写二进制上传,您需要使用可写二进制模式打开文件,该模式实际上是wb+

您还可以使用“with”关键字进行一些整理;参见Django示例


旁注:如果要将文件持久化为文件字段(或派生类),可以提供“upload_to”函数,该函数返回文件存储位置的完整路径和文件名。这将让框架为您处理文件io。

这是我从以前的一个项目中获得的用于将上传文件写入磁盘的内容:

def view_handling_function(request):
    for key, value in request.FILES.iteritems():
        full_path = ...
        save_uploadfile_to_disk(full_path, value)

def save_uploadfile_to_disk(full_path, file):
    with open(full_path, 'w+') as destination:
        for chunk in file.chunks():
            destination.write(chunk)

这是我以前的一个项目中用于将上传文件写入磁盘的内容:

def view_handling_function(request):
    for key, value in request.FILES.iteritems():
        full_path = ...
        save_uploadfile_to_disk(full_path, value)

def save_uploadfile_to_disk(full_path, file):
    with open(full_path, 'w+') as destination:
        for chunk in file.chunks():
            destination.write(chunk)

这是我以前的一个项目中用于将上传文件写入磁盘的内容:

def view_handling_function(request):
    for key, value in request.FILES.iteritems():
        full_path = ...
        save_uploadfile_to_disk(full_path, value)

def save_uploadfile_to_disk(full_path, file):
    with open(full_path, 'w+') as destination:
        for chunk in file.chunks():
            destination.write(chunk)

这是我以前的一个项目中用于将上传文件写入磁盘的内容:

def view_handling_function(request):
    for key, value in request.FILES.iteritems():
        full_path = ...
        save_uploadfile_to_disk(full_path, value)

def save_uploadfile_to_disk(full_path, file):
    with open(full_path, 'w+') as destination:
        for chunk in file.chunks():
            destination.write(chunk)

感谢您的回复,请看我正在尝试ajax上传,“wb+”对我不起作用。。。我猜一些小错误会导致它崩溃,因为您的方法正在保存一些东西,这可能不是ajax请求的问题。。。似乎更可能是python代码编写文件的方式有问题。对这两个文件进行二进制差异检查,看看它们到底有多不同?谢谢你的回复,我正在尝试ajax上传,“wb+”对我不起作用。。。我猜一些小错误会导致它崩溃,因为您的方法正在保存一些东西,这可能不是ajax请求的问题。。。似乎更可能是python代码编写文件的方式有问题。对这两个文件进行二进制差异检查,看看它们到底有多不同?谢谢你的回复,我正在尝试ajax上传,“wb+”对我不起作用。。。我猜一些小错误会导致它崩溃,因为您的方法正在保存一些东西,这可能不是ajax请求的问题。。。似乎更可能是python代码编写文件的方式有问题。对这两个文件进行二进制差异检查,看看它们到底有多不同?谢谢你的回复,我正在尝试ajax上传,“wb+”对我不起作用。。。我猜一些小错误会导致它崩溃,因为您的方法正在保存一些东西,这可能不是ajax请求的问题。。。似乎更可能是python代码编写文件的方式有问题。对这两个文件进行二进制差异检查,看看它们的实际差异有多大?fout.close()的缩进似乎是错误的。此外,fout在使用之前没有在任何地方定义。@Cheng-Yup您是对的,但这也不能纠正问题fout.close()的缩进似乎是错误的。此外,fout在使用之前没有在任何地方定义。@Cheng-Yup您是对的,但这也不能纠正问题fout.close()的缩进似乎是错误的。此外,fout在使用之前没有在任何地方定义。@Cheng-Yup您是对的,但这也不能纠正问题fout.close()的缩进似乎是错误的。此外,fout在使用之前没有定义。@Cheng-Yup你是对的,但这也不能纠正问题