在formspree中使用uploadcare而不使用窗口小部件

时间:2018-08-29 12:43:39

标签: javascript

我正在尝试发送带有生成的pdf的电子邮件,我可以使用uploadcare为用户指定哪个文件,但我希望此操作可以自动完成,即上传的文件为pdf。目前正在发送表单,但缺少my_file部分

<form id="contactform" method="POST">
    <input type="text" name="name" placeholder="Your name">
    <input type="email" name="_replyto" placeholder="Your email">
    <input type="hidden" name="_subject" value="Website contact" />
    <textarea name="message" placeholder="Your message"></textarea>
    <input type="hidden" name="my_file" data-public-key="key_here" />
    <input type="text" name="_gotcha" style="display:none" />
    <input type="submit" value="Send">

</form>

js

            const filetostore = fetch()
                console.log(filetostore)


            async   function fetch(){
                    const itemToStore = document.getElementsByClassName("itemName");
                    const itemQty = document.getElementsByClassName("quoteQty");
                    const itemPrices = document.getElementsByClassName("quotePrice");
                    const itemTotal = document.getElementsByClassName("quoteTotal");
                    const totalCost = "Total Cost" + ":" + document.getElementById("quoteTotalCost").innerText;

            await fn(itemToStore, itemQty, itemPrices, itemTotal, totalCost)

        }

        var my_file = uploadcare.fileFrom('input',  filetostore);
        $('input[name="my_file"]').val(myfile)
        console.log(my_file)

var contactform =  document.getElementById('contactform');
contactform.setAttribute('action', '//formspree.io/' + 'yy92' + '@' + 'gmail' + '.' + 'com');

1 个答案:

答案 0 :(得分:0)

uploadcare.fileFrom方法返回基于承诺的上载保全file instance。如果要在表单中添加文件URL,则需要先获取它。

var my_file = uploadcare.fileFrom('input', filetostore);
my_file.done(function(fileInfo) {
  $('input[name="my_file"]').val(fileInfo.cdnUrl);
});

此外,filetostore参数应为HTMLInputElement,其中包含要上传的文件。从代码片段中不清楚fetch()函数返回什么。