我在本学期参加网络应用课程,我想使用谷歌应用程序引擎实现我的课程项目,但我想知道GAE是否能满足这个项目的要求。 该课程项目是一个家庭作业提交系统,允许用户(学生)上传家庭作业到服务器和教师在线检查作业。
假设上传的家庭作业是一些html和css的东西。令我困惑的是如何实施教师检查在线功能?例如:
学生A上传了一个html文件hello.html,老师想要使用http://xxx.xx/xx/xx/hello.html查看这个作业。
GAE可以满足这个要求吗?据我所知,GAE使用app.yaml指向不同的文件或htmls,但是当学生上传他们的作业时,他们无法更改app.yaml,对吗?
我被困在这里。请帮我。谢谢!
答案 0 :(得分:4)
是的,您可以使用GAE来创建此应用程序,但您必须放弃上传和提供HTML文件的想法,就好像它直接生活在文件系统上一样。你不能这样做。
您可以做的 - 相对容易 - 将提交的文件或文件存储为数据存储对象,并提供一个URL,该URL将所需的文件名作为参数并从数据存储区中提供。
您可以将提交的文件存储在如下模型中:
class HomeworkItem(db.Model):
author = db.UserProperty()
filename = db.StringProperty()
content = db.TextProperty(multiline=True)
submitted_on = db.DateProperty()
content
字段被声明为TextProperty
,假设您正在处理HTML和CSS文件,但如果您打算处理二进制数据,那么您需要使用BlobProperty
。
您需要有两个URL来处理资产的上传和下载。您可以使用Web框架或编写一些代码来处理参数化URL,允许您将文件名等内容编码到URL本身,如下所示:
http://homeworkapp.edu/review/hello.html
然后处理/审核/ * URL的方法将从数据存储中检索数据并将其作为回复发回。
答案 1 :(得分:0)
GAE将满足您的要求,但您需要将每个“hello.html”文件保存在Blobstore或数据存储区中,并构建一些系统来检索和提供上传的文件。请参阅此Q&A for further reference。