ブラウズボタンでファイルをマンドリルメッセージに添付します
-
21-12-2019 - |
質問
これが可能であるかどうかわからないが、私は Mandrill API 。正直に言うと、document.getElementById('idOfFileInput').value
が実際にどのような収益が返されたのか全くわかりません。私はこれが初心者質問に尋ねる場所ではないことを知っていますが、私はどこにでも見つけられました、そして私はそれを見つけることができませんでした(私はあなたの一人はslyになることを知っていて、5分以内にいくつかの記事に指しています)。ただし、脇には、メッセージC:\fakepath\test.txt
と添付するための.txtファイルを取得しました。これは、ブラウザがセキュリティを提供するファイルパスであることを知っています。たぶんそれはコードで尋ねられた:
ボタン:
Attachment(s): <input type="file" id="file">
.
JS:
"attachments": [
{
"type": "text/*",
"name": "file_attachment",
"content": document.getElementById('file').value
}
],
.
これがその文脈によって偽装された単純な質問であるならば申し訳ありませんが、それでも私は一週間の間物事を試みてみることを試みてきたので、私はこの質問が良い将来の参考になるかもしれないという感覚を持っています。いくつかの種類の解決策が、私は1つを見つけることができませんでした。任意のアイデア?
解決
ファイルを添付したい場合は、Ajaxファイルのアップロード
を見ることができます。マンドリルAPIでは、ファイルのencoded文字列が必要です。そのため、ファイルをアップロードできる場合は、簡単にサーバーを使用してAPIで使用するための基本64エンコード文字列を返します。
Ajaxを介してファイルをアップロードするプラグインがあり、jQueryのようなJavaScriptライブラリを使用している場合は jQueryファイルのアップロード
php を使用している場合は、
$result = array();
$result['status'] = 'error';
if(isset($_FILES["mandrill_attachment"]))
{
$base64 = base64_encode(file_get_contents($_FILES["mandrill_attachment"]["tmp_name"]));
$result['base64'] = $base64;
$result['status'] = 'ok';
}
die(json_encode($result));
.
例では短いので、それがOKファイル
であると仮定するだけではなく、ファイルの種類などを確認する必要があります。と js
var mandrill_attachment = false;
$(".attachment").uploadFile({
url: "upload.php",
dragDrop:false,
multiple:false,
autoSubmit:true,
fileName: "mandrill_attachment",
returnType:"json",
onSuccess:function(files,data,xhr)
{
if( data.status == 'ok' )
{
mandrill_attachment = data.base64;
} else {
alert('something went wrong...');
}
}
});
. 他のヒント
これを広く見たことがあり、添付ファイルのためにMandrill APIでファイルアップロード入力を使用することは不可能であると思われます。ブラウザによって所定の位置に置かれているセキュリティ制限のため、サーバーがfile type="input"
で何もする必要があります。
インクファイルピッカーAPI を使用してこれを回避することができました。ファイルへの電子メールの下部にありますが、これは少し魚のように見えます。それは明らかにそれを発表するのが良いでしょう、しかし、私が言ったように、それは不可能であるように思われる。
この妥協点は、いくつかの方法で、ネイティブウェイよりも優れたにあります。インクAPIでは、ユーザーがさまざまなサービスからアップロードすることができ、クラシックファイルのアップロードとともに伸縮性が向上ファイルアップロードメカニズムの使いやすさ。
添付ファイルのリンクを使用することは依然として疑わしいものですが、ファイル名(APIがアクセスできる)を使用してメソッドのスパム性を最小限に抑えることができました。
[ファイル名](直接ダウンロードリンクへのハイパーリンク)がこれに添付されました 電子メール。