文件上传操作

原始的文件上传

在这里插入图片描述
form_test\urls.py

from django.conf.urls import url
from django.urls import re_path

from form_test import views

urlpatterns = [
    url(r'^first/$', views.page_form_first),
    # 用户登录
    url(r'^user/login$', views.user_login, name='user_login'),
    # 用户注册
    url(r'^user/register$', views.user_register, name='user_register'),
    # 从模型创建表单
    url(r'^user/edit$', views.user_edit, name='user_edit'),

    # 文件上传
    url(r'^file/upload/origin$', views.file_upload_origin, name='file_upload_origin'),
]

form_test\views.py

def file_upload_origin(request):
    """ 原始的文件上传 """
    if request.method == 'POST':
        # 获取上传的文件对象 二进制
        file = request.FILES.get('avatar',None)
        filename = os.path.join(settings.MEDIA_ROOT, 'test.jpg')
        with open(filename, 'wb+') as f:
            for chunk in file.chunks():
                f.write(chunk)
        print('上传成功')
    return render(request,'file_upload_origin.html',{

    })

form_test\templates\file_upload_origin.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原始的文件上传</title>
</head>
<body>
    <form action="#" method="post" enctype="multipart/form-data">
        <input type="file" name="avatar">
        <input type="submit" value="开始上传">
    </form>
</body>
</html>

在这里插入图片描述

结合ORM模型文件上传

form_test\urls.py

from django.conf.urls import url
from django.urls import re_path

from form_test import views

urlpatterns = [
    url(r'^first/$', views.page_form_first),
    # 用户登录
    url(r'^user/login$', views.user_login, name='user_login'),
    # 用户注册
    url(r'^user/register$', views.user_register, name='user_register'),
    # 从模型创建表单
    url(r'^user/edit$', views.user_edit, name='user_edit'),

    # 文件上传
    url(r'^file/upload/origin$', views.file_upload_origin, name='file_upload_origin'),

    url(r'^file/upload/form$', views.file_upload_form, name='file_upload_form'),
]

form_test\forms.py

class AvatarUploadForm(forms.Form):
    """ 头像上传form """
    remark = forms.CharField(label='备注', max_length=32)
    avatar = forms.ImageField(label='头像')

form_test\views.py


def file_upload_form(request):
    """ 使用form表单实现文件上传 """
    if request.method == 'POST':
        form = AvatarUploadForm(request.POST, request.FILES)
        if form.is_valid():
            # 保存备注
            # 保存图片
            file = request.FILES.get('avatar', None)
            filename = os.path.join(settings.MEDIA_ROOT, 'test2.jpg')
            with open(filename, 'wb+') as f:
                for chunk in file.chunks():
                    f.write(chunk)
            print('上传成功')
    else:
        form = AvatarUploadForm()
    return render(request,'file_upload_form.html',{
        'form':form

    })

form_test\templates\file_upload_form.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用form表单实现文件上传</title>
</head>
<body>
    <form action="#" method="post" enctype="multipart/form-data">
        <input type="submit" value="开始上传">
        {{ form.as_p }}
    </form>
</body>
</html>

在这里插入图片描述

结合ORM模型文件上传(二)

form_test\urls.py

from django.conf.urls import url
from django.urls import re_path

from form_test import views

urlpatterns = [
    url(r'^first/$', views.page_form_first),
    # 用户登录
    url(r'^user/login$', views.user_login, name='user_login'),
    # 用户注册
    url(r'^user/register$', views.user_register, name='user_register'),
    # 从模型创建表单
    url(r'^user/edit$', views.user_edit, name='user_edit'),

    # 文件上传
    url(r'^file/upload/origin$', views.file_upload_origin, name='file_upload_origin'),

    url(r'^file/upload/form$', views.file_upload_form, name='file_upload_form'),
    url(r'^file/upload/weibo$', views.file_upload_weibo, name='file_upload_weibo'),
]

form_test\forms.py

class WeiboImageForm(forms.ModelForm):
    """ 微博图片上传 """

    content = forms.CharField(label='微博内容', max_length=256,widget=forms.Textarea(attrs={
        'placeholder':'请输入微博内容'
    }))

    class Meta:
        model = WeiboImage
        fields = ['image']

    def save(self, user, commit=False):
        # 先不保存到数据库,先得到对象,接下来对这个对象进行修改,然后在保存
        obj = super().save(commit)

        data = self.cleaned_data
        content = self.cleaned_data['content']
        # 1. 创建微博的记录
        weibo = Weibo.objects.create(user=user, content=content)
        # 2. 修改微博关联关系
        obj.weibo = weibo
        obj.save()
        return obj

form_test\views.py

def file_upload_weibo(request):
    """ 发送微博带图片 """
    user = WeiboUser.objects.get(pk=1)
    if request.method == 'POST':
        form = WeiboImageForm(request.POST, request.FILES)
        if form.is_valid():
            obj = form.save(user, False)
            print('保存成功',obj.pk)
    else:
        form = WeiboImageForm()
    return render(request, 'file_upload_weibo.html',{
        'form':form
    })

form_test\templates\file_upload_weibo.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>带图片的微博发布</title>
</head>
<body>
<h3>发布微博</h3>
<form action="#" method="post" enctype="multipart/form-data">
    {{ form.as_p }}
    <input type="submit" value="发布微博">
</form>

</body>
</html>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用java Swing实现文件上传操作,首先需要使用JFileChooser组件实现文件选择,然后使用URLConnection和HttpURLConnection来发送文件数据,最后使用InputStream进行流的读取和写入操作即可实现文件上传操作。 ### 回答2: 使用Java Swing实现文件上传操作可以通过以下步骤实现: 1. 创建一个Swing界面,包含选择文件按钮、上传按钮和文件名显示框等组件。 2. 在选择文件按钮的事件监听中,使用JFileChooser弹出文件选择框。用户可以选择要上传的文件。 3. 在上传按钮的事件监听中,获取用户选择的文件路径。 4. 使用File和FileInputStream打开选择的文件,并将其读入到字节数组中。 5. 创建一个Socket连接到服务器的指定端口,并将文件内容以字节数组的形式通过Socket发送到服务器。 6. 在服务器端创建一个ServerSocket并监听指定端口,接受客户端的连接。然后使用InputStream和FileOutputStream将接收到的文件内容写入到指定目录。 7. 在客户端和服务器端都需要实现错误处理,包括连接中断、文件不存在等异常情况的处理。 8. 在上传过程中可以实现进度条显示上传进度。 通过以上步骤,可以使用Java Swing实现文件上传操作。注意,这只是一个基本的文件上传实现,实际应用中还需要处理更多细节和异常情况。 ### 回答3: 使用Java Swing实现文件上传操作可以按照以下步骤进行: 1. 创建一个Swing的用户界面,可以使用JFileChooser组件来实现文件选择功能。通过调用JFileChooser的showOpenDialog方法,可以弹出一个文件选择对话框,用户可以选择上传的文件。 2. 获取用户选择的文件路径,可以使用JFileChooser的getSelectedFile方法获得用户选择的文件的File对象。 3. 创建一个上传按钮,并为上传按钮添加监听事件。在监听事件中,获取用户选择的文件,然后将文件上传到服务器。 4. 在监听事件中,使用IO流将文件传输到服务器。可以使用FileInputStream来读取文件内容,并使用Socket将文件内容发送到服务器。 5. 在服务器端实现接收文件的功能,可以使用ServerSocket监听指定端口,然后使用Socket的accept方法接收客户端发送的文件内容。 6. 服务器接收到文件内容后,可以使用FileOutputStream将文件内容写入服务器的文件系统中,保存上传的文件。 7. 在客户端和服务器端都需要处理异常情况,如文件不存在、网络连接异常等。可以使用try-catch语句来捕获异常,并进行相应的处理。 通过以上步骤,我们就可以使用Java Swing实现文件上传操作。需要注意的是,文件上传操作涉及到网络传输和文件操作,需要确保网络连接正常和有相应的权限支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值