回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我使用react Js将图像上传到django restframework。
这里我用fetchapi发送post请求。在</p>
<p>在Eapp.jsx公司在</p>
<pre><code>import React, { Component } from 'react';
class Eapp extends Component {
constructor(props){
super(props);
this.state = {
profilePic: null,
};
this.inpuElement = null;
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(e){
this.setState({profilePic: e.target.files[0]});
}
handleSubmit(){
let formData = new FormData();
formData.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>('profile_pic',this.state.profilePic);
fetch('http://10.42.0.1:8000/auth/profile-pic/', {
method: 'POST',
headers: {
Accept: 'application/json, text/plain, */*',
'content-type': 'multipart/form-data',
},
body:formData,
}).then(res => res.json())
.then((data) => {
console.log(data);
})
.catch(err => console.log(err));
}
render(){
return(
<div>
<input
type="file"
multiple={false}
ref={(input) => { this.inpuElement = input; }}
accept=".jpg,.jpeg,.png"
onChange={this.handleChange}
/>
<button onClick={this.handleSubmit}>submit</button>
</div>
);
}
}
export default Eapp;
</code></pre>
<p>错误消息</p>
^{pr2}$
<p>django公司</p>
<pre><code> views.py
class ProfilePictureView(generics.CreateAPIView):
permission_classes = (permissions.AllowAny,)
serializer_class = ProfilePictureSerializer
parser_classes = (parsers.FormParser,parsers.MultiPartParser, parsers.FileUploadParser, )
def perform_create(self, serializer):
print(self.request.FILES['profile_pic'])
serializer.save(user=User.objects.get(pk=2))
models.py
class Person(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
profile_pic = models.ImageField(null=True, upload_to='media')
face_encodings = models.BinaryField(null=True)
def __str__(self):
return str(self.user.first_name)
serializers.py
class ProfilePictureSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ['profile_pic','user']
read_only_fields = ('user',)
class ProfilePictureSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ['profile_pic','user']
read_only_fields = ('user',)
class ProfilePictureSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ['profile_pic','user']
read_only_fields = ('user',)
raise MultiPartParserError('Invalid boundary in multipart: %s' % boundary.decode())
AttributeError: 'NoneType' object has no attribute 'decode'
</code></pre>
<p>我已经包括了django cors头,除了这条之外,其他所有api路由都在工作。我试过不同的post请求方法,但还是有错误。
似乎无法访问服务器,因为其他路径都在工作。
我在django中尝试过多部分解析器fileUpload parser,但仍然得到错误状态400500。在</p>