gpt4 book ai didi

jquery - 使用 Uploadify 在 Django 中上传文件获取 HTTP 响应代码 403

转载 作者:行者123 更新时间:2023-12-01 01:37:50 25 4
gpt4 key购买 nike

我正在尝试使用 Uploadify 在 Django 中上传文件,如下 this tutorial 。我已正确执行所有步骤。除此之外,我还制作了一个模型,在其中存储有关正在上传的文件的信息。

我的模板包含这个

<script type="text/javascript" src="{{ STATIC_URL }}uploadify/swfobject.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}uploadify/jquery.uploadify.v2.1.4.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#file_upload').uploadify({
'uploader' : '{{ STATIC_URL }}uploadify/uploadify.swf',
'script' : '{% url upload_file %}',
'cancelImg' : '{{ STATIC_URL }}uploadify/cancel.png',
'auto' : true,
'multi' : true,
'fileExt' : '*.doc;*.docx;*.pdf',
'fileDesc' : 'Upload Docs',
'queueID' : 'file_upload_queue',
'removeCompleted': false,
});
});
</script>

<h2 id="smallHeading"> Upload your Documents </h2>
<input id="file_upload" type="file" name="Filedata" />
<a href="javascript:$('#file_upload').uploadifyUpload();">Upload Files</a>

我的 url.py 文件包含这一行

  url(r'^upload/$', 'userprofile.views.upload_file', name='upload_file'), 

View 是

@csrf_exempt
def upload_file(request):
if request.method == "POST":
upload_file = request.FILES['Filedata']
upload_instance = Uploads.objects.create(creator = request.user, uploaded_on = datetime.datetime.now())
upload_instance.file.save(upload_file.name,upload_file)
upload_instance.save()

response = HttpResponse()
response.write("%s\r\n" % upload.name)
return response

我的models.py包含

def get_file_path(instance, filename):
return os.path.join('userprofiles', str(instance.creator.id), filename)

class Uploads(models.Model):
file = models.FileField(upload_to=get_file_path)
creator = models.ForeignKey(User)
uploaded_on = models.DateTimeField()

但是这里什么也没发生。我得到的只是上传按钮,我选择了文件但没有任何反应。有人能帮我找出发生了什么事吗?似乎脚本没有被触发。我知道这一点是因为之前我的观点有错误,但没有出现错误。

非常感谢任何帮助。

编辑:

我在 firebug 控制台中没有看到任何内容,net 面板也没有显示任何 POST 请求,但 django 调试器 显示带有 403 响应的文件上传 POST 请求。我已经使用了 csrf_exempt 那么为什么要禁止呢?

解决方案:我终于解决了这个问题。关于403错误,我从这个link中发现了一些有趣的事情。如果一个 View 有装饰器 csrf_exempt 并且该 View 有 404 错误,那么 django 会显示 403 错误。

实际问题是最初我的链接是错误的,所以当我更正它时,我不再收到 403 错误,但开始收到 500 错误。这意味着 View 中有问题。由于 uploadufy 不会在 firebug 中记录任何内容,因此我必须通过单步调试 View 中的行来进行调试。

似乎由 uploadify 脚本发送的请求对象不完整,并且创建对象时的 creator = request.user 行给了我错误。除了这一行之外,上面发布的代码完全可以工作。

最佳答案

我建议进一步调试,看看问题是出在客户端 JavaScript 还是服务器端 Django 代码。

下载 Firefox 的 Firebug 插件。加载您的页面。打开 Firebug 并转到“网络”选项卡。确保所有 JavaScript 均已加载。接下来,检查控制台以查看是否存在任何 JavaScript 错误。接下来检查 Django 日志以查看是否有任何 HTTP 请求通过并且可能存在错误。

这应该可以帮助您获取更多信息,从而帮助您解决问题。您随时可以使用通过上述步骤收集的其他信息来更新您的问题。

关于jquery - 使用 Uploadify 在 Django 中上传文件获取 HTTP 响应代码 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8834576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com