{{/if}}
现在添加JavaScript,从使用我们的JSON Handlebars助手开始一些可变初始化开始:请注意,我们包括一个包含用户名的隐藏字段。我们将通过我们的请求发送将其发送到Trainsloadit,以便可以在我们的模板中使用。
>
<span>var sig = {{{ json sig }}};</span>现在,我们将transloadit插件绑定到上传表格:
这比我们之前查看的最小整合初始化更为复杂,所以让我们一次浏览一下。
<span>$(function() { </span> <span>$('#avatar-form').transloadit({ </span> <span>wait: true, </span> <span>params: JSON.parse(sig.params), </span> <span>signature: sig.signature, </span> <span>fields: true, </span> <span>triggerUploadOnFileSelection: true, </span> <span>autoSubmit: false, </span> <span>onSuccess: function(assembly) { </span> <span>$('img#avatar').attr('src', assembly.results.thumbnail[0].url + '?' + (new Date()).getTime() ); </span> <span>var derivatives = { </span> <span>thumbnail : assembly.results.thumbnail[0].url, </span> <span>medium : assembly.results.medium[0].url, </span> <span>large : assembly.results.large[0].url </span> <span>}; </span> $<span>.ajax({ </span> <span>type: 'post', </span> <span>url: '/avatar', </span> <span>data: derivatives, </span> <span>success: function(resp){ </span> <span>console.log(resp); </span> <span>} </span> <span>}) </span> <span>} </span> <span>}); </span><span>});</span>>
>我们正在从SIG变量中汲取参数和签名,该变量我们在服务器上生成,然后编码为JSON。由于参数部分是嵌套的,因此我们使用JSON.PARSE()将其转换为对象,从该对象将Transloadit从中提取相关参数。
>在插件初始化中,等待设置为true,这意味着我们要等到两个文件都已上传>和
它们已经处理过。> 使用汇编通知(您可以在高级用法部分稍后阅读)意味着您不一定需要等待文件进行处理,在这种情况下,您可以将其设置为false。
>字段设置为true,以告诉插件我们要在发送文件处理时要包含其他信息;在我们的情况下,这是一个名为用户名的隐藏表单字段,我们将使用身份验证的用户的用户名填充。> 当数据从TransloadIt返回时,> 用户选择文件,而不是在提交表单时,使用
> triggeruploadonfileselection将文件发送到发送载荷。一旦结果从Transloadit返回,AutoSubmit就可以防止其提交表格,因为我们将自己手动执行此操作。
或者,您可能希望使用SSL_URL属性,该属性与URL相同,但与HTTPS相同。>最后,我们使用Ajax将数据默默发布回我们的应用程序。>我们只是通过相应的派生名称提取三个URL,然后创建三个衍生物的哈希及其相应的URL。 为了向用户提供视觉反馈,我们还抓住了缩略图的URL,并在页面上修改了头像以显示新的删除图像。
这是捕获该数据的头像路线:
在生产中,您可能想对此进行消毒和验证。
如您所见,我们采集衍生图像及其URL的哈希,从req.user获取当前身份验证的用户,将Avatar属性设置为提供的哈希,然后更新用户模型。
这只是一种可能的方法。为了获得更快的反馈,您可能需要使用插件的on Result回调来获取缩略图,而不是等待所有三个导数。您可能不喜欢使用“客户代码”通知服务器的AJAX调用,而是更喜欢使用“汇编通知”功能,这为在后台运行汇编而不是在客户端上执行执行提供了其他好处。请咨询插件文档以获取各种选项。>总结了我们的基本应用。别忘了,所有来源(包括身份验证机制)都在GitHub上结束。
<span>var sig = {{{ json sig }}};</span>高级用法
其他客户端选项在总结之前,让我们简要介绍一下Transloadit的几个更高级的方面。
>您不必使用提供的jQuery插件。在文档的“社区项目”部分中,您会发现许多替代方案,包括用于bootstrap的插件,一个用于拖动n'drop,一个角度插件或对普通旧Xhr的支持等等。
> XHR可能值得您更详细地研究。这是一种裸露的解决方案,可以提供足够的灵活性,同时要求您提供自己的反馈,例如某种上传指示器。还值得注意的是,一旦上载文件,它将通过以1000ms的间隔进行轮询服务器来确定何时完成组件。
>>通知
>通知;只需将Notify_url与您的汇编说明一起包含:
><span>var sig = {{{ json sig }}};</span>当您的URL被Transloadit刺穿时,提供的JSON将包含一个签名字段,您可以使用该字段来验证通知确实来自它们。只需使用您的euth Secret解码签名。
在开发过程中,您可能希望利用此代理包,以测试您的装配通知或使用隧道服务,例如Ngrok。
摘要
在这一部分,我们弄脏了手,并使用jquery,node.js和express构建了一个简单的用户头像组件。
>您不仅限于jQuery,实际上,您可以自由使用香草JavaScript解决方案或您喜欢的框架。您甚至不需要从客户端应用程序中使用它,而在服务器端技术方面,您有多种选择。不过,希望您现在已经对如何用于图像处理有所了解。
>您是否在项目中使用Transloadit?您知道更好的服务吗?在评论中让我知道。
>>常见问题(常见问题解答)关于node.js中的用户avatar组件,带有transloadit
>如何自定义AVATAR在Node.js中的外观?您可以更改头像的大小,形状和颜色。例如,要更改大小,请调整“调整大小”参数。要改变形状,请使用“作物”参数。您还可以分别使用“水印”和“文本”参数在头像上添加水印或覆盖文本。
>在使用transloadit用于用户avatar生成时如何处理错误? Transloadit涉及聆听组件中的错误事件。如果在组装过程中发生错误,则Transloadit将发出“错误”事件。您可以聆听此活动并适当处理它。例如,您可能需要记录错误,通知用户或重试汇编。
>>如何通过Transloadit? Transloadit涉及对您的组装说明进行微调并有效地管理您的资源。例如,您可以减小生成的头像的大小,以节省带宽和存储空间。您还可以使用TransLoadit的“ auto_retry”功能自动重试的失败的组件,从而可以提高您的头像生成过程的可靠性。
>以上是用node.js&transloadit构建用户头像组件的详细内容。更多信息请关注PHP中文网其他相关文章!