Я сейчас использую плагин для переноса файлов. Но так как через несколько дней я получаю сообщение об ошибке при загрузке изображения. Я понятия не имею, что изменилось.Ионный [2] Код 1 при отправке с помощью файла передачи
Я получаю код 1, который равен FileTransferError.FILE_NOT_FOUND_ERR
. Но что это значит? У него проблемы с поиском изображения на моем телефоне? Или найти изображение на сервере? У кого-нибудь есть идея?
Я получаю FileTransferError
, который возвращает статус 500 и сообщение an error has occurred
, но все возвращается. Также он переходит на 100%, а затем он дает ошибку.
Мой серверный код.
/// <summary>
/// Saves a collection item and adds it to the collection
/// </summary>
/// <returns></returns>
[HttpPost, Route("collections/save")]
public async Task<IHttpActionResult> createItem()
{
if (!Request.Content.IsMimeMultipartContent())
return InternalServerError(new Exception("UnsupportedMediaType"));
var provider = new CustomMultipartFormDataStreamProvider(ApiSettings.CollectionBasePath);
try
{
// Load the stream into buffer
Request.Content.LoadIntoBufferAsync().Wait();
// Read all contents of multipart message into CustomMultipartFormDataStreamProvider.
await Request.Content.ReadAsMultipartAsync(provider);
}
catch (Exception ex)
{
return InternalServerError(new Exception($"Failed to read: {ex.Message}"));
}
return Ok();
}
/// <summary>
/// Used to override an action within the MultipartFormDataStreamProvider
/// This is needed to format the file name of a posted file
/// </summary>
internal class CustomMultipartFormDataStreamProvider : MultipartFormDataStreamProvider
{
public CustomMultipartFormDataStreamProvider(string path) : base(path) { }
/// <summary>
/// Takes the bodypart off of the filename string
/// </summary>
/// <param name="headers">the headers to mutate</param>
/// <returns>mutated filename</returns>
public override string GetLocalFileName(HttpContentHeaders headers)
{
return headers.ContentDisposition.FileName.Replace("\"", string.Empty);
}
}
Мое приложение код
upload (baseUrl: string, string image, onSuccess: any, onFailed: any, onProgress: any) : void {
var ft = new FileTransfer();
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = filename;
options.mimeType = "image/jpeg"
options.chunkedMode = false;
options.headers = {
'Content-Type' : undefined
}
ft.onprogress = (e: ProgressEvent) => onProgress(e);
ft.upload(image, baseUrl + "collections/save", onSuccess, onFailed, options);
}
failed = (err: any) : void => {
var code = err.code;
console.log(err);
alert("Failed to upload image. Code: " + code);
}
onProgress = (progressEvent: ProgressEvent) : void => {
if (progressEvent.lengthComputable) {
var progress = Math.round((progressEvent.loaded/progressEvent.total) * 100);
//this.progress = progress;
this.setProgress(progress);
}
}
success = (result: any) : void => {
this.current++;
if(this.current <= this.total) {
// this.progress = 0;
this.setCurrent(this.current);
this.setProgress(0);
setTimeout(() : void => {
// give the animation time to reset
this.upload(this.collection.items[this.current - 1]);
},1000);
} else {
this.finished = true;
}
}