
本文共 1051 字,大约阅读时间需要 3 分钟。
在学习MVC项目的时候,有一个页面的需求是上传文件。运行过程是这样的,当点击上传文件按钮时,就会触发选择文件,去电脑里面选择上传的文件,文件规定是图片文件,其他的文件不能上传,完成这个需求的过程如下:
在视图这里定义一个方法,方法定义完成后,在文件上传按钮里面通过onclick调用该方法。方法的作用是当点击上传文件这个按钮的时候,调用隐藏的input标签,就可以选择需要上传的文件了。在隐藏的input标签里面定义了一个方法,这个方法是为了提交数据。这里用到了异步提交,我是用插件完成的,引用form表单异步提交的插件,然后就可以调用插件里面的方法。

数据是提交到控制器这里来到,所以要在控制器这里定义一个方法接收视图传递过来的数据。方法的名称自定义,接收数据的参数是文件类型的。在方法里面实例化了一个定义当前状态的类,实例化这个类之前要去文件夹里面封装这个类,这个类的作用就是提示,如果在项目运行报错的时候就能根据提示找到对应的代码。
因为是接收文件,这里用了一个try,防止上传文件的过程中报错,报错后之前实例化的那个定义当前状态的类就起到了提示的作用。在try里面先判断传递的文件是否为空,不为空进行下一步操作,如果为空就给一个提示,提示一下上传的文件为空了。然后获取到文件的扩展名,获取扩展名的目的是为了判断上传的文件是否是图片类型的,因为这个项目页面的需求是只需要上传图片类型的文件。再进行下一步判断保存的目录是否存在,不存在就创建。目录是保存在本地文件夹里面,第一次上传是存放在临时文件夹里面的,在正式上传的时候就存放在images文件夹里面,这个是保存的时候会自动创建的。
总结:有时候定义好的方法调用不了,就去检查一下方法中的代码是否是有敲错的,如果方法没有问题,可能按钮或者标签里面的onclick事件里面的方法名称出错了,方法名称的后面要加一个英文状态下的括号才能调用。
如果是图片文件上传出错了,就是控制器里面定义的方法有问题,通过断点的方法慢慢的调试,就能找出报错的原因了。在拼接字符串哪里最有可能出现错误,如果字符串没有问题,就返回到视图,查看视图里面的代码,异步提交的方法是否有问题。
异步提交是可以多线程提交的一种方式,是可以不用等上一步代码执行完成后再执行下一步代码,异步是直接执行代码,就算是上一步代码没有执行完,它也不会停留等待的,它会直接执行下一步操作,这就是异步提交。在视图里面异步提交后接收数据,可以去查看一下接收控制器返回的数据是否有问题,方法借鉴于老师。
发表评论
最新留言
关于作者
