使用 Django 文件上传

2023-12-21

我正在使用ajax上传 http://valums.com/ajax-upload/代码执行简单的 AJAX 文件上传。我遇到的问题是提交后文件没有显示在后端。

前端代码非常基本:

<div id="image_uploader">Upload More Images</div>
<script type="text/javascript" charset="utf-8">
    function createUploader(){            
        var uploader = new qq.FileUploader({
            element: document.getElementById('image_uploader'),
            action: '/add/image/1',
            debug: true,
            onSubmit : function () {
                progress.show();
            },
            onComplete : function () {
                progress.hide();
            },
            onCancel : function () {
                progress.hide();
            },
        });           
    };

    createUploader();
</script>

后端代码(当前正在进行中)也非常基本:

def add_image(request, id):
    print request
    if request.FILES:
        return HttpResponse("{success:true}")
    else:
        return HttpResponse("{success:false, message:'Unable to find FILES}")

对我来说,使用来自亚历克斯·库尔 http://kuhlit.blogspot.com/2010/12/ajax-uploads-in-django-with-little-help.html, request.GET['qqfile']有文件名和request.read()(在 Django 1.3 中)返回了数据。

request.FILES 仅用于我尚未发生的场景。我使用 ajax-upload 直接与 Photologue 对话,我的代码如下所示:

def save_upload( uploaded, filename, raw_data ):
    """
    raw_data: if True, upfile is a HttpRequest object with raw post data
    as the file, rather than a Django UploadedFile from request.FILES
    """
    try:
        filename = os.path.normpath(os.path.join(IMAGE_UPLOAD_PATH, filename))
        with BufferedWriter( FileIO( filename, "wb" ) ) as dest:
            # if the "advanced" upload, read directly from the HTTP request
            # with the Django 1.3 functionality
            if raw_data:
                (dirName, fileName) = os.path.split(filename)
                (fileBaseName, fileExtension)=os.path.splitext(fileName)
                #
                # right here, if fileBaseName is less than n characters, might want to slap on a date just for fun
                #
                try:
                    i_can_has_p = Photo.objects.get(title=fileBaseName)
                    title = fileBaseName + "_" + str(datetime.datetime.now().strftime("%Y%m%dT%H%M%S"))
                except Photo.DoesNotExist:
                    title = fileBaseName
                title_slug = slugify(title)
                p = Photo(title=title, title_slug=title_slug)
                p.image.save(filename,ContentFile(uploaded.read()))
            # if not raw, it was a form upload so read in the normal Django chunks fashion
            else:
                # TODO: figure out when this gets called, make it work to save into a Photo like above
                for c in uploaded.chunks( ):
                    dest.write( c )
    except IOError:
        # could not open the file most likely
        return False
    return True

def ajax_upload( request ):
  if request.method == "POST":
      # AJAX Upload will pass the filename in the querystring if it is the "advanced" ajax upload
      if request.is_ajax( ):
          # the file is stored raw in the request
          upload = request
          is_raw = True
          try:
              filename = request.GET[ 'qqfile' ]
          except KeyError:
              return HttpResponseBadRequest( "AJAX request not valid" )
      # not an ajax upload, so it was the "basic" iframe version with submission via form
      else:
          is_raw = False
          if len( request.FILES ) == 1:
              # FILES is a dictionary in Django but Ajax Upload gives the uploaded file an
              # ID based on a random number, so it cannot be guessed here in the code.
              # Rather than editing Ajax Upload to pass the ID in the querystring, note that
              # each upload is a separate request so FILES should only have one entry.
              # Thus, we can just grab the first (and only) value in the dict.
              upload = request.FILES.values( )[ 0 ]
          else:
              raise Http404( "Bad Upload" )
          filename = upload.name

  # save the file
  success = save_upload( upload, filename, is_raw )

  # let Ajax Upload know whether we saved it or not
  ret_json = { 'success': success, }
  return HttpResponse( json.dumps( ret_json ) )

就我而言,ajax_upload是ajax调用的函数action:范围

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Django 文件上传 的相关文章

  • 非常大的字段会对 MySQL 数据库产生负面影响吗?

    我目前正在使用 Django 构建一个网站 并希望托管用户生物样式页面 该页面可能长达几 KB 这些字段不一定需要搜索 但在查找用户名时确实需要提供 将这些数据存储在数据库中会产生负面影响吗 如果我使用带有数据库链接的静态文本文件 我的服务
  • HTTP PUT 在 Java 中上传文件

    Edit 我想我已经弄清楚如何执行二进制数据部分 仔细检查代码 但我很确定我做对了 现在 当我尝试按照中所述完成上传时遇到新错误Vimeo API 文档 http vimeo com api docs upload streaming Ed
  • 从 Django 运行 shell 命令

    我正在 Django 中开发一个网页 使用 apache 服务器 需要调用 shell 命令来启用 禁用一些守护进程 我尝试这样做 os system service httpd restart 1 gt HOME out 2 gt HOM
  • linux下如何从文本文件中获取值

    我有一些文本格式的文件 xxx conf 我在这个文件中有一些文本 disablelog 1 当我使用 grep r disablelog oscam conf 输出是 disablelog 1 但我只需要值1 请问你有什么想法吗 一种方法
  • React 文件预览 (FIREBASE)

    我目前将文件存储在 Firebase 存储中 我希望能够实时生成每个文件的文件预览 映射 例如 PDF 文件会将第一页显示为图像 docx 将是文档的第一页 pptx 将是第一张幻灯片 未知文档将是默认文档符号 有人知道有什么好的服务可以轻
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • Seed_data.yaml 文件中有没有办法自动生成第一个模型所依赖的模型?

    我正在使用 Django 2 0 Python 3 7 和 MySql 5 我有以下两个模型 第二个依赖于第一个 class CoopType models Model name models CharField max length 20
  • 如何在 Ext.js 中自动完成 html 输入标签?

    如果您使用 Ext js 库 如何在输入文本区域中进行自动完成 更准确地说 如何根据迭代 Ajax 请求进行自动完成 例如jQuery 自动完成插件 http docs jquery com Plugins AutoComplete aut
  • jquery datatable ajax 无数据可用 mvc

    我有一张桌子是在 document ready功能 我还使用 jQuery DataTables 插件 由于某种原因 当页面加载时 ajax 调用控制器并返回数据并将其设置为我的网格所有获取的数据 但是尽管所有数据都加载到数据表中 但仍获取
  • JSF - 在 ajax 调用上传递参数 - 这段代码有什么问题?

    当我进行 ajax 调用时 我需要将参数传递给 bean 我的豆子是这样的 ManagedBean RequestScoped public class Selector ManagedProperty value param page p
  • jqgrid删除:没有获取值

    我使用 JSP 和 Servlet IDE Eclipse 数据库 Oracle10 开发 Web 应用程序 我在用JQGRID以表格格式显示数据 我还想要添加 编辑 删除的功能JQGRID 到目前为止我已经完成了编辑功能 现在我想要Del
  • ajax推送服务器

    好吧 我最近写了一个ajax推送脚本 其中后端的php在等待某人更新时处于休眠状态 但是休眠的进程占用了大量的cpu 关于如何防止这种情况的任何想法 我猜我必须要么找到一个可以使用线程休眠的程序 要么用我不太熟悉的 python 或 c 编
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • Django REST Framework - CurrentUserDefault 使用

    我正在尝试使用CurrentUserDefault一个序列化器的类 user serializers HiddenField default serializers CurrentUserDefault 文档说 为了使用它 请求 必须作为
  • django 迁移地狱,丢了一张表。试图把它找回来

    所以我在数据库中删除了一个表 并且希望将其恢复 重新运行迁移会出现错误表不存在 经过一番搜寻后 我了解到我可以删除 django migrations 中应用程序名为我的应用程序的所有内容 所以我这样做了 重新运行迁移 它开始工作 然后抱怨
  • .py 文件和 .ipy 文件有什么区别?

    我尝试过以两种方式保存 并运行 脚本 并使用两种方式运行它ipython and python 但我没有看到任何区别 这些文件扩展名是多余的吗 Edit python 和 ipython 之间的区别 https stackoverflow
  • 文件比较的逻辑

    我试图编写一个用于文件比较的程序 例如 file1 1 2 3 4 5 file2 1 2 3 4 5 如果我逐行执行 我会得到 1 1 2 2 3 4 3 5 4 5 但是 事实是这些文件之间的唯一区别是 我想要得到这样的东西 1 1 2
  • 操作数无法与形状 (128,) (0,) 错误一起广播

    我正在尝试实现面部识别登录系统 但出现错误 操作数无法与形状 128 0 一起广播 我不知道什么或如何解决它 这是我已实现的 view py 和 FaceDetector py 以及我从服务器收到的错误 errors Traceback m
  • 如何在 PHP 中上传 .txt 文件并在另一页面上逐行读取该文件?

    我的目标是在表单上上传 txt 文件 浏览 将文件发布到另一个 php 页面 然后逐行读取该文件 到目前为止我的代码就在这里 文件 1 HTML 上传

随机推荐