みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
●使用ツール
Filemaker Pro Advanced 13
いつもお世話になっております。
[URLから挿入]スクリプトステップで、fileプロトコルを使用して
日本語が混じったURLを挿入しようとしたとき、エラー番号1631「接続に失敗しました 」というエラーが出ます。
[URLから挿入]では、日本語は使用できないのでしょうか?
使用できるようになる方法などがあれば、教えていただけないでしょうか。
> 日本語は使用できないのでしょうか?
ええ、使えません。
GetAsURLEncoded関数でURLエンコードが可能です。
Offline
ご解答ありがとうございます。
以下のアドレスで試してみましたが、同様のエラーが発生しました。
"file://(ドライブ名)/(ドキュメントパス)" & GetAsURLEncoded ( $ファイル名 )
※ドキュメントパスは半角のみ。
ファイルパスに全角が含まれていない場合は成功します。
[URLから挿入]スクリプトステップ
fileプロトコル
日本語が混じったパス
は、動作がおかしいですね。
日本語のファイル名を SHIFT-JISでURLエンコードすると、ファイルの挿入は、出来ますが、オブジェクトフィールドに取り込まれたファイルの名前が文字化けします。
※FileMaker標準機能でSHIFT-JISでURLエンコードは、できません。
httpプロトコルの場合は、GetAsURLEncoded ( $ファイル名 )とかの、UTF-8のURLエンコードで挿入OK。
ローカルの日本語を含むファイルの取り込みは、今のところ[URLから挿入]では、無理ですね。
修正されるまで
[ファイルを挿入]で代用するしか無いでしょう。
Last edited by qb_dp (2015-05-19 18:09:11)
Offline
ご解答ありがとうございます。
確かにSHIFT-JISエンコードだと挿入できましたが文字化けしますね..
[ファイルを挿入]で代用したい所なのですが、行いたい動作としては
Webダイレクトを使用し、クライアント操作でサーバ側の特定フォルダに置かれているファイルを取得したいのです。
クライアント側のスクリプトで、サーバ側のフォルダを操作することができないので
サーバサイドスクリプトを使用し
①FileMakerDBにファイルを取得(サーバサイドスクリプト)
②でDBのファイルをエクスポート(クライアント側スクリプト)
という動作を考えています。
①のサーバサイドスクリプトでは[ファイルを挿入]が非対応の様なので
[URLから挿入]を代用しておりました。
他の方法で上記動作を実現することは出来ないでしょうか..
フィールド設定 [import::obj; "file:../ファイル.txt"]
で参照インポートして、Base64Encode -> Base64Decode とすれば、イケそうです。
サーバーで検証はしていません。
フィールドで処理した場合の例:
■フィールド:obj|オブジェクト|
■フィールド:cFileName|計算|= Let([
c_obj=obj;
val=Substitute ( c_obj ; "/" ; ¶ );
ValCount=ValueCount ( val );
Result=GetValue ( val ; ValCount )
];
Result
)
■フィールド:c_obj_BASE64Enc|計算|= Base64Encode ( obj )
■フィールド:c_obj_BASE64Dec|計算|= Base64Decode ( c_obj_BASE64Enc ; cFileName)|計算結果:オブジェクト
※フィールドは、分けなくても上記の様な処理をスクリプトで行っても良いかと思います。
Last edited by qb_dp (2015-05-20 11:57:37)
Offline
サーバ側の特定フォルダをWEB共有するのが手っ取り早そうですが。
あるいは、ファイル名を日本語でなくすとか。
FM14でURLをエンコードしないオプションが追加になったけど、これとは関係ないみたい。file:はOS上でファイルを探すだけなので、エンコードする必要ないですから、エンコードしなければ取得できそうなもんですが...
入れ違いで回答が来てましたが
「エンコードする必要がない」と書いたのは「FMがfile:のURLを処理するときに」で、与えるURLとしてはエンコードするのが正しいです。受け取った側はデコードするわけで、それもFMが自分でやることになるので...
ヘルプに
[URL から挿入] でサポートされるのは、UTF-8 だけです。
て書いてあるのに、SJISでデコードしてるってことなのかなあ??
ご解答ありがとうございます。
>>qb_dpさん
ありがとうございます。
サーバーサイドスクリプトでの参照インポートの方法が分からなかったので、検証はできませんでしたが
>■フィールド:c_obj_BASE64Enc|計算|= Base64Encode ( obj )
>■フィールド:c_obj_BASE64Dec|計算|= Base64Decode ( c_obj_BASE64Enc ; cFileName)|計算結果:オブジェクト
上記の方法でファイルのリネームが出来る様なので、
インポートするファイルのファイル名は半角固定名称にし、「cFileName」に任意のファイル名を入れる事で実現できました。
>>scripterさん
ありがとうございます。
諸事情によりサーバ側のフォルダの共有設定は行えず、
ファイル名も特定の命名規則に沿った物でないといけないので、困っておりました。
皆さんのアドバイスのおかげで解決できました。
ありがとうございました。
>サーバーサイドスクリプトでの参照インポートの方法が分からなかったので、.....
[フィールド設定]で参照インポートになります。
フィールド設定 [import::obj; "file:../ファイル.txt"]
Last edited by qb_dp (2015-05-20 17:01:55)
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 520.8 KiB (Peak: 525.71 KiB) ]