1

Je suis un noeud débutant js. J'ai écrit la procédure stockée suivante dans SQL Server:Comment envoyer une image au noeud de service Web js, puis exécuter la procédure stockée avec ce paramètre d'image

CREATE PROCEDURE [dbo].[SP_ADDMESSAGE] 
    @PhoneNumber nvarchar(50), 
    @Type numeric(18,0), 
    @Image Image=null, 
    @MessageContent nvarchar(255)=null 
AS 
BEGIN 
    insert Message([PhoneNumber],[Type],[Image],[MessageContent]) 
    values(@PhoneNumber,@Type,@Image,@MessageContent) 
    RETURN 1 
END 

Mon NodeJS Service Web:

app.post('/message/add',function(req,res){ 
    sql.close(); 
    // connect to your database 
    sql.connect(config, function (err) { 
     if (err) 
      console.log(err); 

     var request = new sql.Request(); 
     request.input('PhoneNumber',sql.NVarChar(50),req.query.phoneNumber); 
     request.input('Type',sql.Numeric,req.query.type); 
     //request.input('Image',sql.Image,req.query.image); 
     //How to add image into SP??? 
     request.input('MessageContent',sql.NVarChar(225),req.query.messageContent); 
     request.execute('SP_ADDMESSAGE').then(function(err,recordset,returnValue,affect){ 
      console.dir(recordset); 
      console.dir(err); 
     }).catch(function(err) { 
      console.log(err); 
     }); 
    }); 
}); 

Mais je ne sais pas comment envoyer POST demande http avec l'image dans Android (ou utilisez l'application Postman ou HttpRequester dans Firefox) à ce service Web, et comment ajouter l'image dans le paramètre dans la procédure stockée à exécuter.

+0

une fois que j'ai essayé d'utiliser postier avec des fichiers - ce n'était pas très lisse. J'ai écrit un petit script, disons test d'intégration, qui faisait exactement ce dont j'avais besoin. Jetez un oeil à la demande module npm. – Lazyexpert

Répondre

0

Généralement, les données binaires, comme les images, ne sont pas stockées dans la base de données. Le stockage à ce niveau est cher (relativement parlant) et n'est pas destiné à ce genre de chose. Au lieu de cela, les images sont stockées sur le système de fichiers sous la forme d'un fichier renommé (sans extension) et reçoivent un enregistrement unique dans la base de données pour les représenter.

Cet enregistrement a généralement:

  • un id ou UUID
  • unique généré le type de fichier
  • le nom du fichier
  • la taille du fichier
  • Date
  • téléchargé
  • etc.

Certaines applications vont optimiser l'image à ce stade, car avouons-le les appareils photo sont incroyablement bons ces jours-ci et les fichiers sont énormes (je le recommande fortement). Pour retourner l '"image" à l'application, vous devez générer une URL en utilisant l'identifiant unique de l'enregistrement de la base de données que je viens de mentionner.

Cela correspondrait à un chemin dans l'application OU une URL CDN externe si vous avez choisi cette direction à la place. Parlant à l'approche "in-app". L'application recherchera l'enregistrement en fonction de la clé fournie dans l'URL (yoursite.com/images/1), puis récupèrera les données binaires de leur emplacement et les restituera à l'aide d'une bibliothèque graphique (nodejs possède une version du GD library que j'ai déjà utilisée).