2017-01-11 18 views
1

私はCF10 REST APIサービスを使用しており、ユーザーのプロフィール画像をアップロードしようとしています。ColdFusion REST APIサービスに画像をアップロードできません

サービスメソッドは、先にこの画像を保存しようとします:

<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> 

私は次のようにこのサービスを呼び出すようにしようとしています:私はこの呼び出しを行う

<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> 

後、私はエラーメッセージが表示されます"サポートされていないメディアタイプ"。私の周りに検索しようとしたが、作品解決策を見つけることができませんでした

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

:私はcfhttpタグを使用する場合

は、私は同じ問題を取得します。 ほとんどのAPIは既にCF REST APIを介して実装されているので、私はそれに固執していますので、今のところフレームワークを使用することはできません。

ご協力いただければ幸いです。ありがとう。

+0

アップロードしようとしているファイルの実際のMIMEタイプは何ですか? ColdFusion 10の「cffile」タグが変更され、デフォルトではファイル拡張子だけでなくファイルのMIMEタイプも実際に評価されます。このブログのエントリーを参照 - [http://www.sagarganatra.com/2012/03/coldfusion-10-cffile-restricting-file.html](http://www.sagarganatra.com/2012/03/coldfusion-10) -cffile-restrictedting-file.html)を参照してください。最後に、 'fileGetMimeType'関数を使用してファイルのMIMEタイプを取得する例を示します。テストページを作成し、それをアップロードしているファイルに対して使用して、どのMIMEタイプが表示されるかを確認します。 –

+0

cfcのcffileタグに 'accept =" image/jpg "'があります。本当のjpgファイルをアップロードしましたか? – Jules

+0

@ Miguel-F @jules okだから、fileGetMimeTypeを使ってファイルのMIMEタイプをチェックしました。それは 'image/jpeg'でした。私はcfhttpの呼び出しを変更し、サービスのcfcもこのMIMEタイプで作業するように変更しましたが、私はまだ同じ問題を抱えています。 –

答えて

0

次のようにコードを変更し、テストします。

<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> 
関連する問題