我正在使用DjangoRest框架和AngularJs上传文件。我的视图文件如下所示:
class ProductList(APIView):
authentication_classes = (authentication.TokenAuthentication,)
def get(self,request):
if request.user.is_authenticated():
userCompanyId = request.user.get_profile().companyId
products = Product.objects.filter(company = userCompanyId)
serializer = ProductSerializer(products,many=True)
return Response(serializer.data)
def post(self,request):
serializer = ProductSerializer(data=request.DATA, files=request.FILES)
if serializer.is_valid():
serializer.save()
return Response(data=request.DATA)
由于post方法的最后一行应该返回所有数据,我有几个问题:
请求中是否有任何内容。文件
?最后,我能够上传图像使用Django。这是我的工作代码
views.py
class FileUploadView(APIView):
parser_classes = (FileUploadParser, )
def post(self, request, format='jpg'):
up_file = request.FILES['file']
destination = open('/Users/Username/' + up_file.name, 'wb+')
for chunk in up_file.chunks():
destination.write(chunk)
destination.close() # File should be closed only after all chuns are added
# ...
# do some stuff with uploaded file
# ...
return Response(up_file.name, status.HTTP_201_CREATED)
网址。派克
urlpatterns = patterns('',
url(r'^imageUpload', views.FileUploadView.as_view())
请求上传
curl -X POST -S -H -u "admin:password" -F "file=@img.jpg;type=image/jpg" 127.0.0.1:8000/resourceurl/imageUpload
使用FileUploadParser,它都在请求中。使用put方法,您将在文档中找到一个示例:)
class FileUploadView(views.APIView):
parser_classes = (FileUploadParser,)
def put(self, request, filename, format=None):
file_obj = request.FILES['file']
# do some stuff with uploaded file
return Response(status=204)
我使用的是同一个堆栈,也在寻找文件上载的示例,但我的情况更简单,因为我使用ModelViewSet而不是APIView。钥匙原来是pre_save hook。我最终将其与angular文件上传模块一起使用,如下所示:
# Django
class ExperimentViewSet(ModelViewSet):
queryset = Experiment.objects.all()
serializer_class = ExperimentSerializer
def pre_save(self, obj):
obj.samplesheet = self.request.FILES.get('file')
class Experiment(Model):
notes = TextField(blank=True)
samplesheet = FileField(blank=True, default='')
user = ForeignKey(User, related_name='experiments')
class ExperimentSerializer(ModelSerializer):
class Meta:
model = Experiment
fields = ('id', 'notes', 'samplesheet', 'user')
// AngularJS
controller('UploadExperimentCtrl', function($scope, $upload) {
$scope.submit = function(files, exp) {
$upload.upload({
url: '/api/experiments/' + exp.id + '/',
method: 'PUT',
data: {user: exp.user.id},
file: files[0]
});
};
});
当我要求一个图像http://127.0.0.1:8000/api/images/1/或者传入参数进行裁剪http://127.0.0.1:8000/api/images/1/?height=320 我得到的答复是: 而在http://127.0.0.1:8000/api/images/ 答复是: 为什么缩略图不容易返回主机名,我如何将基本网址追加到响应中? 以下是我的看法。派克
我想我会在这里问这个问题,因为我不太确定我会错在哪里。我正在尝试使用Django Rest框架类通过AJAX执行POST请求。但是,每当事件触发时,我都会收到以下错误: 这是堆栈跟踪中显示的内容: 上下文 我试图做到这一点,当用户单击“添加到列表”按钮时,它会向用户定义的列表发送一个cafeName(以及最终的其他详细信息)。 我想知道是否有人可以看看我的代码,并给我一些指导,我哪里出了问题? 代
本文向大家介绍Spring框架实现文件上传功能,包括了Spring框架实现文件上传功能的使用技巧和注意事项,需要的朋友参考一下 在Java中实现文件的上传有多种方式,如smartUpload或是使用Strus2,本文与大家分享使用Spring框架中的MultipartFile类来实例文件的上传。 不啰嗦了,直接上干货。先是编写了一个实现文件上传的类FileUploadingUtil,此类中定义了两
使用Django REST框架的通用,我创建了一个我认为应该能够通过POST请求上传照片的终端。 到目前为止,我尝试使用Android和curl将文件发布到此endpoint,并观察到相同的行为:创建了一条新记录,但没有附加该文件。因为该文件是必填字段,服务器然后返回500错误。 这个问题看起来很相似,但是他没有使用REST框架的通用视图,我不知道为什么...我想在适当的时候利用它们。 这是我的D
问题内容: 我有以下示例代码: 我需要查找将哪些SQL查询发送到数据库。 如何使用SQL Express和VS 2012剖析EF查询? 有什么工具吗? 问题答案: 您在这里有一些选择。 通过在运行时打印出来检查查询看到(我认为这仅适用于查询,可能不是最好在上述情况下) 使用管理工作室内置的SQL事件探查器 使用Entity Framework Profiler(一个非常好的第三方工具,带有试用版,
Easyswoole 在核心中提供了文件处理的系统组件,文件处理的主要代码实现文件为CoreHttpMessageUploadFile.php; 而文件处理的核心关键点在于onRequest事件进行全局拦截,通过请求获文件Stream。 Stream 在CoreComponentIOStream.php 使用 一,获取基本实例 举?上传文件 在控制器中获取获取上传文件的3种方式 $one