2017-01-11 1 views
1

Ich verwende den CF10 REST API Service und versuche, ein Profilbild für einen Benutzer hochzuladen.Das Image kann nicht in einen Coldfusion REST API Service hochgeladen werden.

Die Service-Methode versucht, dieses Bild zu einem Ziel zu speichern:

<cfcomponent rest="true" 
      restpath="/users"> 
    <cffunction name="saveProfilePicture" 
       access="remote" 
       httpmethod="POST" 
       restpath="{userid}/profilePicture" 
       returntype="any"> 

     <cfargument name="uploadedImage" required="true"/> 
     <cfargument name="userid" required="true" restargsource="Path"/> 

     <cffile 
     action="upload" 
     destination="#upload_path#" 
     fileField="uploadedImage" 
     result="profilePicture" 
     accept="image/jpg" 
     /> 
    </cffunction> 
</cfcomponent> 

Ich versuche, diesen Dienst zu nennen wie folgt:

<form method="POST" enctype="multipart/form-data" action="#path#/users/#userid#/profilePicture"> 
<input type="file" name="uploadedImage"/> 
<input type="submit" name="btn_submit_profilePicture" id="btn_submit_profilePicture" 
value="Submit"/> 
</form> 

Nachdem ich diesen Anruf Ich erhalte eine Fehlermeldung machen "Nicht unterstützter Medientyp"

ich das gleiche Problem, wenn ich cfhttp verwenden:

<cfhttp url="#path#/users/#userid#/profilePicture" 
result="restResult" method="POST" multipart="true"> 
<cfhttpparam file="someimage.jpg" mimetype="image/jpg" 
name="uploadedImage" type="file"/> 
</cfhttp> 

ich versucht habe, um zu suchen, aber keine Lösung, die funktioniert finden konnte. Ich kann kein Framework ab sofort verwenden, da die meisten APIs bereits über die CF REST API implementiert sind, also denke ich, dass ich damit durchhalte.

Jede Hilfe würde sehr geschätzt werden. Vielen Dank.

+0

Was ist der tatsächliche MIME-Typ der Datei, die Sie hochladen möchten? In ColdFusion 10 wurden Änderungen am Tag "cffile" vorgenommen, sodass der Mime-Typ der Datei und nicht nur die Dateierweiterung standardmäßig ausgewertet wird. Siehe diesen Blog-Eintrag - [http://www.sagarganatro.com/2012/03/coldfusion-10-cffile-restricting-file.html] (http://www.sagarganatra.com/2012/03/coldfusion-10 -cffile-resting-file.html). Am Ende enthält er ein Beispiel für die Verwendung der Funktion 'fileGetMimeType', um den MIME-Typ einer Datei zu erhalten. Erstellen Sie eine Testseite und verwenden Sie diese für die Datei, die Sie hochladen, um zu sehen, welchen MIME-Typ sie sieht. –

+0

Ich sehe, Sie haben 'accept =" image/jpg "' im cffile-Tag Ihres cfc. Hast du eine echte JPG-Datei hochgeladen? – Jules

+0

@ Miguel-F @jules ok, also habe ich den Mime-Typ der Datei mit FileGetMimeType überprüft und es war 'image/jpeg'. Ich habe Änderungen in der cfhttp Aufruf und auch in der Service-cfc mit diesem Mime-Typ arbeiten, aber ich bekomme immer noch das gleiche Problem. –

Antwort

0

Ändern Sie Ihren Code wie folgt und testen Sie ihn.

<cfcomponent rest="true" 
     restpath="/users"> 
<cffunction name="saveProfilePicture" 
      access="remote" 
      httpmethod="POST" 
      restpath="{userid}/profilePicture" 
      returntype="any"> 

    <cfargument name="uploadedImage" restargsource="form"/> 
    <cfargument name="userid" restargsource="Path"/> 

    <cffile 
    action="upload" 
    destination="#upload_path#" 
    result="arguments.uploadedImage" 
    accept="image/jpg,image/jpeg" 
    /> 
</cffunction> 
</cfcomponent> 
Verwandte Themen