android 百度云存储位置,基于邮件和百度云存储的android用户反馈系统设计

2023-10-25 05:59

本文主要是介绍android 百度云存储位置,基于邮件和百度云存储的android用户反馈系统设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.整体设计

android应用程序通过专门的“用户反馈”页面获取用户反馈,将用户反馈内容打包成文件上传至百度云存储,上传完毕后通知服务端。服务端收到通知后下载对应文件,并通过邮件发送给指定邮箱。

本文采用的服务器是CentOS release 5.8 (Final)。

本文中用到的工具或服务有:百度云存储、mutt+msmtp(邮件服务)、ucspi-tcp(TCP多线程服务)、bash脚本。

2.客户端

2.1 反馈内容上传至云存储

这里可以下载到android使用的SDK,同样可以下到php和python的SDK,因此本文中所提到的方法同样适用于使用php或python开发的客户端。

上传的具体方法在百度云存储官网写的比较清楚,这里只是简单介绍一下过程。

注册百度账号,并成为百度开发者。

创建应用并获取密钥对(ak&sk)

创建bucket,即存放文件的‘仓库’

上传文件至‘仓库’

现在我们假设已经可以将文件通过代码的方式上传至百度云存储。

官方提供了web页面管理,我们手动上传一个图片文件作为用户反馈内容。

ecb59498d460a9f7b4e7e156d9375c0b.png

2.2 通知服务端有反馈内容

客户端以TCP的方式通知服务端有反馈内容,通知的格式为 userid:filename,当然这里可以自定义。服务端在收到通知后结束TCP连接。

3. 服务端

3.1 mail环境

在ubuntu中可以很方便的利用mutt和msmtp配置好mail环境,具体可参考这里。

而在我用的centos的yum源里没有msmtp的包,着实费了点力气。具体可以参考这里。

在我的服务器上出现了 centos msmtp error: pkg-config not found 的错误,也就是说pkgconfig没有安装,可以一次性把所有东西都装了。

yum -y install automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig

配置完毕后,可以通过如下命令验证是否成功:

echo "this is a test attachment." >>attachment.log

echo "mail content"|mutt -s "hello from centos" 目标邮箱 -a `pwd`/attachment.log

检查你的邮箱是否收到该邮件。

3.2 云存储下载工具

百度云存储的官方提供了shell下载工具shell-tool,下载后解压,解压后的文件夹是Baidu_BCS_Shell-Tool_V1.2,在该目录下的bsconf文件中配置刚刚申请的百度云存储的ak和sk,也即百度云存储的用户名和密码。

配置完成后测试刚刚我们存放在云上的文件:

1e7d383b99460b41c0161f0c255be944.png

3.3 TCP多线程服务

由于服务程序需要支持多个客户端,因此nc这个万能军刀暂时只能搁置一边了。我们用ucspi-tcp的tcpserver服务来完成TCP的多客户端支持。

我们首先按照官网的介绍来安装,下载→解压→configure+make+make install,一路过去。

期间我的服务器出现报错:/lib64/libc.so.6: could not read symbols: Bad value,解决方法是:

编辑 ./ucspi-tcp-0.88./conf-cc,将原来的gcc -O2改为

gcc -O2 -include /usr/include/errno.h

请留意,这里是errno而非error。

安装完毕后,我们来测试一下。在服务器端输入tcpserver 0.0.0.0 8888 pwd,意思是开启一个8888的对外端口,有客户端连接到该端口后,将执行‘pwd’这个程序。我们用nc命令模拟一个客户端,

nc your_server_ip 8888

客户端将出现执行服务器的当前目录:

af10f328d68472aa45d59c820b427c35.png

3.4 服务脚本

好了,现在我们只剩下最后一步了,就是写服务脚本。有两个脚本需要写:

文件1:proc_feedback.sh

#!/bin/sh

file_log=`pwd`log.txt

dir_feedback=`pwd`/feedback

dir_baidu_utils="/root/tools/Baidu_BCS_Shell-Tool_V1.2"

#wait for client sending something.

read recv

#inform client for recved

echo "recved: ${recv}" >>/dev/null

#download feedback content

#assume content recved like "userid:feedback_content_file_store_in_baidu_cloud"

userid=`echo $recv | cut -d ":" -f1`

len_userid=`expr ${#userid} + 2`

filename=`expr substr $recv $len_userid ${#recv}`

cur_time=`date '+20%y-%m-%d %H:%M:%S'`

if [ -z "$userid" -o -z "$filename" ]

then

echo "[$cur_time]  feedback invalid, userid=$userid, filename=$filename"

exit

fi

#log

echo "[$cur_time]  $recv" >>$file_log

#download feedback file

if [ ! -d $dir_feedback ]

then mkdir $dir_feedback

fi

cd $dir_baidu_utils

./bsutil.sh cp bs://file-trans/${filename} ${dir_feedback}/${filename} >>/dev/null

cd - >>/dev/null

#mail to feedback service email

mail_title="feedback from $userid"

mail_content="time:$cur_time\nfrom:$userid"

mail_attachment="${dir_feedback}/${filename}"

echo -e "$mail_content" | mutt -s "$mail_title" your_email@qq.com -a "${mail_attachment}"

文件2:service_feedback.sh

#!/bin/sh

tcpserver 0.0.0.0 8888 /root/src/feedback/proc_feedback.sh

4. 测试

4.1 启动服务

./service_feedback.sh &

4.1 用户准备反馈内容

前面我们已经上传了一个feedback_test.gif的文件到云端。

4.2 用户发送反馈内容

8fa230bb2278621bf4458f899b383f11.png

4.3 客服人员在指定邮箱内查看用户反馈内容

faca2bd0f57c57e164a4bc51409d1ce8.png

b9b347af4e21ed1d94e58e1e3b3037e6.png

这篇关于android 百度云存储位置,基于邮件和百度云存储的android用户反馈系统设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/280478

相关文章

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。