Используя "ng2-file-upload" с Angular 2 и Typescript, невозможно загрузить файл выше, 1 МБ
Я пытаюсь загрузить файл размером более 1 МБ и жалуется на большой размер. Я установил размер до 50 МБ, но это, похоже, не вступает в силу. Что я делаю неправильно? Пожалуйста помоги
@Component({
moduleId: module.id,
//define the element to be selected from the html structure.
selector: 'NeedAnalysisConsult',
//location of our template rather than writing inline templates.
templateUrl: 'need-analysis-consultation.component.html',
})
export class NeedAnalysisConsultationComponent implements OnInit {
model:any={};
consultationDate: Date;
organisation: string;
devCode:String;
maxFileSize = 50 * 1024 * 1024;
//declare a property called fileuploader and assign it to an instance of a new fileUploader.
//pass in the Url to be uploaded to, and pass the itemAlais, which would be the name of the //file input when sending the post request.
public uploader:FileUploader = new FileUploader({url: URL,isHTML5: true, itemAlias: 'consultation',maxFileSize: this.maxFileSize});
//This is the default title property created by the angular cli. Its responsible for the app works
title = 'app works!';
ngOnInit() {
//override the onAfterAddingfile property of the uploader so it doesn't authenticate with //credentials.
this.uploader.onAfterAddingFile = (file)=> { file.withCredentials = false; };
this.uploader.onBuildItemForm=(item:any,form:any)=>{
form.append('devCode',this.model.programmeCode);
form.append('date',this.model.consultationDate);
form.append('organization',this.model.organisation);
};
//overide the onCompleteItem property of the uploader so we are
//able to deal with the server response.
this.uploader.onCompleteItem = (item:any, response:any, status:any, headers:any) => {
console.log("FileUpload:successfully uploaded:", item, status, response);
if (status==201){
alert("FileUpload: successfully");
}
else {
alert("FileUpload:"+response);
}
};
}
Я пытаюсь загрузить файл размером более 1 МБ и жалуется на большой размер. Я установил размер до 50 МБ, но это, похоже, не вступает в силу. Что я делаю неправильно? Пожалуйста помоги
1 ответ
Я проверил ваш метод, и он нормально загружается на мой сервер. Проверьте, настроен ли ваш сервер для приема файлов размером более 1 МБ. Чтобы быть в состоянии подтвердить, что ответ об ошибке от сервера вы можете реализовать следующие обратные вызовы, как вы сделали на onCompleteItem
,
onSuccessItem(item: FileItem, response: string, status: number, headers:ParsedResponseHeaders): any {
//this gets triggered only once when first file is uploaded
}
onErrorItem(item: FileItem, response: string, status: number, headers:
ParsedResponseHeaders): any {
let error = JSON.parse(response); //error - server response
}
Затем вы можете подписаться на них, как показано ниже:
this.uploader.onErrorItem = (item, response, status, headers) => this.onErrorItem(item, response, status, headers);
this.uploader.onSuccessItem = (item, response, status, headers) => this.onSuccessItem(item, response, status, headers);
Таким образом, вы сможете проверить, если ошибка с сервера.
Только две вещи могли вызвать это:
На стороне клиента, если параметр maxFileSize ng2-file-upload меньше 1 МБ
На стороне сервера Если вы используете PHP на стороне сервера, настройте следующие параметры в php.ini
post_max_size = 50M # подразумевает, что один почтовый запрос не должен превышать 50 МБ в любой момент времени, независимо от количества загруженных файлов.
upload_max_filesize = 50M # Подразумевает, что ни один отдельный файл не должен превышать 50 МБ на запрос
max_file_uploads = 10 # подразумевает, что только 10 файлов могут быть загружены за один запрос