2

外部の宛先から S3 に画像を取得、サイズ変更、保存するには、一連の画像パスをループする必要があります。

私はこれを行うために cfcs を呼び出すことに慣れています:

<cfinvoke component="form_img_handler" method="upload" returnvariable="imgSuccess">
    <cfinvokeargument name="command" value="upload_search"/>
    <cfinvokeargument name="imgPath" value="#results.bildpfad #"/>
    <cfinvokeargument name="imgFile" value="#results.bilddateiname#"/>
    <cfinvokeargument name="sellerILN" value="#results.iln#"/>
    <cfinvokeargument name="cookie" value="#variables.screenWidth#"/>
</cfinvoke>

質問:
ループでこれを 25 回実行する必要がある場合は、cfobject代わりにを使用した方がよいでしょうcfinvokeか? 私が理解していることからcfinvoke、インスタンス化され、その仕事を実行して消滅します。cfobjects滞在する間。もしそうなら、上記の場合は を使用する方が良いでしょうcfobjectか? もしそうなら、どのようにupload関数を呼び出し (パラメーターを渡す)、完了したらオブジェクトを削除するのですか?

(以前は cfobject を使用したことがありません...)

手伝ってくれてありがとう!

4

2 に答える 2

10

どちらも、次のようなものを使用してください...

外側のループ (おそらくアプリケーションなどのグローバル スコープ内):

<cfset form_img_hander = createObject('component','dotted.path.to.form_img_hander') />
or
<cfset form_img_hander = new dotted.path.to.form_img_hander() />

ループ内:

<cfset imgSuccess = form_img_handler.upload
    ( command   = "upload_search"
    , imgPath   = results.bildpfad
    , imgFile   = results.bilddateiname
    , sellerILN = results.iln
    , cookie    = variables.screenWidth
    )/>

はるかに読みやすいからです。


パフォーマンスの問題があることを証明する再現可能なテストケースがない限りパフォーマンスの問題はありません。


オブジェクトの削除について...
オブジェクトを永続的なスコープに配置していない場合、それらの削除について心配する必要はありません-それらはリクエストにのみ関連付けられており、リクエストが終了すると、必要に応じてガベージコレクションされます。

オブジェクトを永続的なスコープに配置している場合、おそらくそれらを削除することを心配する必要はありませんが、そうすると判断した場合は、StructDelete を使用して削除できます (他の変数と同様)。もちろん、必要なときにそうしないように注意する必要があります。

于 2012-08-24T18:24:53.550 に答える
4

を使用してオブジェクトをインスタンスCreateObject化し、変数に割り当てます。

<cfset handler = CreateObject("component", "form_img_handler")>
<cfset handler.upload(URL.command, URL.imgPath ... )>

オブジェクトを一度インスタンス化した後、ループで 2 行目を呼び出すことができます。

于 2012-08-24T18:24:39.777 に答える