Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Rest框架和Angular 2文件上传_Python_Django_Rest_Angular_File Upload - Fatal编程技术网

Python Django Rest框架和Angular 2文件上传

Python Django Rest框架和Angular 2文件上传,python,django,rest,angular,file-upload,Python,Django,Rest,Angular,File Upload,我正在使用Django Rest框架和Angular 2上传一个文件。我的文件看起来像这样。 我做错了什么?请告诉我。多谢各位 Django文件: 看法 序列化程序 模型 服务 addTask(型号:any):可观察{ let headers=新的headers(); set('Accept','application/json'); //headers.set('Authorization','JWT'+localStorage.getItem('id_token')); //headers.

我正在使用Django Rest框架和Angular 2上传一个文件。我的文件看起来像这样。 我做错了什么?请告诉我。多谢各位

Django文件:

看法

序列化程序

模型

服务

addTask(型号:any):可观察{
let headers=新的headers();
set('Accept','application/json');
//headers.set('Authorization','JWT'+localStorage.getItem('id_token'));
//headers.set('Content-Type','multipart/formdata');
//headers.set('Content-Type','application/json');
headers.set('Content-Type','*/*');
let options=newrequestoptions({headers:headers});
返回这个.http.post(URL、模型、选项).map((response:response)=>response.json());
}
输入


我也有这个错误,我用
headers.set('Content-Type','undefined')解决了它

我这样使用它: angular2服务(设置所需的内容类型:):

}

在django视图中:

    def put(self, request, format=None):

    file_obj = request.FILES['file']

    self.logger.info('Uploading file')
    uploaded = bicloudreposervice.upload_file(request.user.username, file_obj)

    return out
如果要使用临时文件处理程序添加到设置:

FILE_UPLOAD_HANDLERS = [
'django.core.files.uploadhandler.TemporaryFileUploadHandler',

]

您是否遇到任何错误?如果是,请张贴!对象{u body:“{”detail:“{”Multipart form parse error-Multipart中的无效边界:None”,status:400,ok:false,statusText:“Bad Request”,headers:Object,type:2,url:}对于给定的请求{”detail:“请求中不支持的媒体类型\”undefined\“}Delete
parser\u classes=(MultiPartParser,FormParser,)
并再次尝试获取错误{“详细信息”:“请求中不支持的媒体类型\“未定义”。}
class ProjectTask(models.Model):
    text = models.CharField(_('text'), max_length=200, blank=True, null=True)
    file = models.FileField(
        _('file'), blank=True, null=True, upload_to=directory_path
    )
    project = models.ForeignKey(
        DashboardProject,
        verbose_name=_('project'),
        related_name='task_list',
        on_delete=models.CASCADE
    )

    class Meta:
        verbose_name = _('project task')
        verbose_name_plural = _('project tasks')
        ordering = ('-id',)

    def __str__(self):
        return self.text[:20]

    def __repr__(self):
        return '<ProjectTask {}>'.format(self.text[:20])
saveTask() {
    this.taskForm.value.file = this.file;
    console.log(this.taskForm.value);
    this.taskService.addTask(this.file).subscribe(
      (data) => {
        console.log(data)
      },
      (error) => {
        console.log(error)
      }
    );
  }

  onChange(event) {
    let files = event.target.files;
    console.log(files);
    let formData: FormData = new FormData();
    formData.append('file', files[0], files[0].name);
    //if (files.length > 0) {
    //  let formData: FormData = new FormData();
    //  for (let file of files) {
    //    formData.append('files', file, file.name);
    //  }
    console.log(formData);
    this.file = formData
  }
  addTask(model:any): Observable<TaskId> {

      let headers = new Headers();
      headers.set('Accept', 'application/json');
      // headers.set('Authorization', 'JWT ' + localStorage.getItem('id_token'));
      // headers.set('Content-Type', 'multipart/form-data' );
      // headers.set('Content-Type', 'application/json' );
      headers.set('Content-Type', '*/*' );
      let options = new RequestOptions({ headers: headers });
      return this.http.post(URL, model, options).map((response: Response) => response.json());

  }
<input type="file" id="file" name="file" formControlName="file" (change)="onChange($event)">
  uploadFile(file, filename: string){
let headers = new Headers({ 'Content-Type': 'application/vnd.ms-excel'});
headers.append("X-CSRFToken", this.utils.getCookie('csrftoken'));
headers.append("Content-Disposition", "attachment; filename=" + filename);

let options = new RequestOptions({ headers: headers });
return this.http.put(this.connectorsUrl + 'manage-files/', file , options)
                .map(res => res.json())
                .catch(this.handleError);
    def put(self, request, format=None):

    file_obj = request.FILES['file']

    self.logger.info('Uploading file')
    uploaded = bicloudreposervice.upload_file(request.user.username, file_obj)

    return out
FILE_UPLOAD_HANDLERS = [
'django.core.files.uploadhandler.TemporaryFileUploadHandler',