如何在DreamFactory上使用分块上传图片?
我使用的是angualr2,尝试过xhr和http.post。两者都不能工作,我得到201状态码,资源返回为空。文件上写着
POST http://{url}/api/v2/{storage_service_name}
Request header:
...
Content-Type: multipart/form-data;
...
Request payload:
-- <file content> --没有明确的解释
发布于 2017-03-13 07:26:54
我也一直在试图弄清楚这一点,但文档确实没有太大帮助。这就是我最终使用的
创建一个组件,如下所示。路径输入表示已在文件服务上创建的文件夹。如果文件夹不存在,仍然需要重构代码来创建文件夹,但到目前为止,这是可行的。
import { Component, ElementRef, Input, ViewChild } from '@angular/core';
import { Headers, Http } from '@angular/http';
import * as constants from '../shared/config';
@Component({
selector: 'file-upload',
template: '<input type="file" #fileInput>'
})
export class FileUploadComponent {
@Input() multiple: boolean = false;
@Input() path: string = '';
@ViewChild('fileInput') inputEl: ElementRef;
baseResourceUrl: string = constants.API_BASE_URL + '/api/v2/files/';
constructor(private http: Http) {}
upload() {
console.log("changed");
let inputEl: HTMLInputElement = this.inputEl.nativeElement;
let fileCount: number = inputEl.files.length;
let fileName: string = '';
console.log(inputEl.files);
let formData = new FormData();
if (fileCount > 0) { // a file was selected
formData.append('files[]', inputEl.files.item(0), inputEl.files.item(0).name);
formData.append('pmCase', '100');
fileName = inputEl.files.item(0).name;
let myHeader = new Headers();
let token = localStorage.getItem('session_token');
myHeader.append('Content-Type', 'multipart/form-data');
myHeader.append('X-Dreamfactory-API-Key', 'xxxxxxxxxxx');
myHeader.append('X-Dreamfactory-Session-Token', token);
this.http
.post(`${this.baseResourceUrl + this.path + fileName}`, formData, { headers: myHeader })
.map((resp) => resp.json())
.subscribe((uploadResp) => {
console.log(uploadResp);
}, (error) => console.error(error));
}
}
}发布于 2017-02-03 04:12:04
您应该检查文件的html输入名称是否为"files“-文件字段的任何其他名称都不会上传内容。此外,您还需要将其发布到要存储该文件的目录或路径。假设目录已经存在,它应该会像预期的那样上传文件。祝好运!
https://stackoverflow.com/questions/38909929
复制相似问题