大多数手机不支持文件上传控件,无法直接像电脑客户端一样上传文件到服务器。这里考虑通过邮件发送文件到服务器的方式来实现上传。
大概步骤如下:
step 1. 打开上传文件的页面时,生成uuid作为临时文件的名称
step 2. 页面里显示发送邮件的tag,通过邮件标题传递uuid,用户通过发送带附件的邮件来上传文件
step 3. 这一步是重点和难点。
首先,是配置邮件服务器,在接收到包含了附件的邮件时(某个指定邮件账户[email protected]接收到邮件时),触发脚本(test1.sh)。
然后,在脚本里面调用Java(Test2.java),传入的参数是接收到的邮件文件路径。
最后,Java里从邮件文件里读取出附件,然后访问Web服务器,把附件上传到Web服务器,保存为文件名包含uuid的临时文件。
step 4. 在页面点击更新按钮后,根据uuid从临时文件里找到匹配的上传文件,做对应业务处理。
基本思路就是这样子,当然真正去实现肯定要花费一发功夫的。这里写一下大概的实现代码
1. 使用java的java.util.UUID类生成uuid
String s = UUID.randomUUID().toString();
2. 页面的发送邮件tag和保持uuid的hidden tag
<a href="mailto:[email protected]?subject=7bcffff4-0f54-442e-8111-d698b88008ed">上传文件</a>
<input type="hidden" name="uuid" value="7bcffff4-0f54-442e-8111-d698b88008ed" />
3.配置邮件服务器,这里以postfix做例子
1) 在/etc/aliases里添加一行脚本来调用新建的脚本 test1.sh。test就是用于接收邮件的邮件账户。
添加完后需要执行newaliases命令重新载入。
</