отправить изображение с другими атрибутами, чтобы опубликовать метод в API - PullRequest
0 голосов
/ 01 октября 2019

Я использую приведенный ниже код для отправки изображения в метод post и сохранения его как BLOB в БД, и он успешно работает:

угловой код:

public postUploadedFile(file:any){

   this.formData = new FormData();
   this.formData.append('file',file,file.name);

  this.Url='http://localhost:38300/api/site/PostUploadFiles';
  console.log("url passed from here",this.Url)

  return this.http.post(this.Url , this.img).subscribe()
 }

Код API:

 public IHttpActionResult PostUploadFiles()
    {
        int i = 0;
        var uploadedFileNames = new List<string>();
        string result = string.Empty;

        HttpResponseMessage response = new HttpResponseMessage();

        var httpRequest = HttpContext.Current.Request;
        if (httpRequest.Files.Count > 0)
        {

        while(i < httpRequest.Files.Count && result != "Failed")
            {


                br = new BinaryReader(httpRequest.Files[i].InputStream);
                ImageData = br.ReadBytes(httpRequest.Files[i].ContentLength);
                br.Close();
                if (DB_Operation_Obj.Upload_Image(ImageData) > 0)
                {
                    result = "success";
                }
                else
                {
                    result = "Failed";
                }
                i++;
            } 

        }
        else
        {
            result = "can't find images";
        }
        return Json(result);
    }

но теперь мне нужно отправить больше информации с изображением (тип ID, имя), а не только изображение, поэтому угловой код будет выглядеть так:

public postUploadedFile(file:any, type_id:number,site_id:number){
  this.img = new Image_List();
  this.img.images = new Array<PreviewURL>();
  this.img.type_id= type_id;
  this.img.Reference_id = site_id;
  this.img.images.push(file);
   this.formData = new FormData();
   this.formData.append('file',file,file.name);

  this.Url='http://localhost:38300/api/site/PostUploadFiles';
  console.log("url passed from here",this.Url)

  return this.http.post(this.Url , this.img).subscribe()
 }

любая помощь для отправки и вставкив БД.

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Используйте FormData для добавления дополнительной информации к вызову API.

const formData = new FormData();
formData.append(file.name, file,'some-data');

Вы можете использовать несколько значений с одним и тем же именем.

0 голосов
/ 01 октября 2019

Я думаю, что вы могли бы просто сделать один метод загрузки файла и создать другой метод для вставки данных с именем файла, поэтому он будет выглядеть так: public postUploadedFile (file: any) {this.formData = new FormData ();this.formData.append ( 'файл', файл file.name);this.Url = 'http://localhost:38300/api/site/PostUploadFiles'; This.newMethod (filename); // и здесь вы загружаете другие данные console.log («URL-адрес передан отсюда», this.Url) возвращает this.http.post (this.Url, this.img) .subscribe ()}

...