关于javajqueryajax上传文件的信息

jquery不使用插件通过ajax方法上传文件

传统的表单也需要定义“multipart/form-data”这样的方式,就是将文件转成二进制流上传到服务器。而jquery的ajax本身貌似本身并没有办法读取本地的文件形成二进制流上传到服务器。只能用插件来实现。

ajax jquery 中的 文件上传问题(jsp+java开发)

试想,如果js就能上传文件,是多么可怕的事情。如果你登录某个网站,这个网站把你的私密文件偷偷都上传了,会是什么结局?

所以浏览器,都要做到安全性考虑,是不会允许js来上传文件的,那么上传文件 必须通过form表单来实现,并且必须通过表单的file文本框来实现,并且必须有用户点击选择文件。

上传文件的安全性处理,是有很深的用意的。

所以你要上传文件,又不想动当前页面的话,建议还是用iframe上传吧。iframe里面套一个form表单。

如果只是在pc网站上用的话,也可以考虑用flash插件、silverlight插件。

关于javajqueryajax上传文件的信息

jsp中使用jquery的ajaxfileupload插件怎么实现异步上传

ajaxfileupload实现异步上传的完整例子:

JSP页面中引入的script代码:

script

function ajaxFileUpload()

{

$(“#loading”).ajaxStart(function(){

$(this).show();

})//开始上传文件时显示一个图片

.ajaxComplete(function(){

$(this).hide();

});//文件上传完成将图片隐藏起来

$.ajaxFileUpload({

url:’AjaxImageUploadAction.action’,//用于文件上传的服务器端请求地址

secureuri:false,//一般设置为false

fileElementId:’imgfile’,//文件上传空间的id属性 input type=”file” id=”imgfile” name=”file” /

dataType: ‘json’,//返回值类型 一般设置为json

success: function (data, status) //服务器成功响应处理函数

{

alert(data.message);//从服务器返回的json中取出message中的数据,其中message为在struts2中定义的成员变量

if(typeof(data.error) != ‘undefined’)

{

if(data.error != ”)

{

alert(data.error);

}else

{

alert(data.message);

}

}

},

error: function (data, status, e)//服务器响应失败处理函数

{

alert(e);

}

}

)

return false;

}

/script

struts.xml配置文件中的配置方法:

struts

package name=”struts2″ extends=”json-default”

action name=”AjaxImageUploadAction” class=”com.test.action.ImageUploadAction”

result type=”json” name=”success”

param name=”contentType”text/html/param

/result

result type=”json” name=”error”

param name=”contentType”text/html/param

/result

/action

/package

/struts

上传处理的Action ImageUploadAction.action

package com.test.action;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.Arrays;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings(“serial”)

public class ImageUploadAction extends ActionSupport {

private File imgfile;

private String imgfileFileName;

private String imgfileFileContentType;

private String message = “你已成功上传文件”;

public File getImgfile() {

return imgfile;

}

public void setImgfile(File imgfile) {

this.imgfile = imgfile;

}

public String getImgfileFileName() {

return imgfileFileName;

}

public void setImgfileFileName(String imgfileFileName) {

this.imgfileFileName = imgfileFileName;

}

public String getImgfileFileContentType() {

return imgfileFileContentType;

}

public void setImgfileFileContentType(String imgfileFileContentType) {

this.imgfileFileContentType = imgfileFileContentType;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

@SuppressWarnings(“deprecation”)

public String execute() throws Exception {

String path = ServletActionContext.getRequest().getRealPath(“/upload/mri_img_upload”);

String[] imgTypes = new String[] { “gif”, “jpg”, “jpeg”, “png”,”bmp” };

try {

File f = this.getImgfile();

String fileExt = this.getImgfileFileName().substring(this.getImgfileFileName().lastIndexOf(“.”) + 1).toLowerCase();

/*

if(this.getImgfileFileName().endsWith(“.exe”)){

message=”上传的文件格式不允许!!!”;

return ERROR;

}*/

/**

* 检测上传文件的扩展名是否合法

* */

if (!Arrays.String asList(imgTypes).contains(fileExt)) {

message=”只能上传 gif,jpg,jpeg,png,bmp等格式的文件!”;

return ERROR;

}

FileInputStream inputStream = new FileInputStream(f);

FileOutputStream outputStream = new FileOutputStream(path + “/”+ this.getImgfileFileName());

byte[] buf = new byte[1024];

int length = 0;

while ((length = inputStream.read(buf)) != -1) {

outputStream.write(buf, 0, length);

}

inputStream.close();

outputStream.flush();

} catch (Exception e) {

e.printStackTrace();

message = “文件上传失败了!!!!”;

}

return SUCCESS;

}

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月28日 10:46:31
下一篇 2024年3月28日 10:55:46

相关推荐

  • 关于avrstudio6c语言的信息

    c语言的程序员们你们公司用的开发工具是什么呢? 学c语言可以用的软件推荐如下:TurboC是由美国Borland公司开发的一套C语言程序开发工具,Borland公司是一家专门从事软件开发、研制的大公司。 Code:Blocks是一个开放源码的全功能的跨平台C/C++集成开发环境。Code:Blocks是开放源码软件。Code:Blocks由纯粹的C++语言开…

    2024年5月23日
    4600
  • 关于java如何查找线程的信息

    kill-3生成的线程堆栈怎么查看 通过给JVM发送一个SIGQUIT信号,您可以得到一个线程堆。 threaddump文件就是文本文件,可以使用任何文本查看工具进行查看; 建议使用比较高效的工具,比如more, less 等。 “Full thread dump”是一个全局唯一的关键字,你可以在中间件和单机版本Java的线程堆栈信息的输出日志中找到它(比如…

    2024年5月23日
    4000
  • 关于javasocketreader的信息

    用JAVA编写一个socket通信程序。 1、java编程对于Socket之间的通信过程如下:服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。 2、服务端初始化ServerSocket,然后对指定的端口进行绑定,接着对端口及进行监听,通过调用accept方法阻塞。 此时,如果客户端有一个socket连接到服务端,那…

    2024年5月23日
    7900
  • 关于javapitfallspdf的信息

    怎么用java动态生成pdf文档 1、首先,您需要在 Java 程序中添加 Spire.Xls.jar 文件作为依赖项。您可以从这个链接下载 JAR 文件;如果您使用 Maven,则可以通过在 pom.xml 文件中添加以下代码导入 JAR 文件。 2、iText是着名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通…

    2024年5月23日
    4300
  • linux上传文件覆盖,linux文件覆盖命令

    linux怎样将文件覆盖到另一个文件 1、cp -f 强行复制文件或目录,不论目标文件或目录是否已存在。 2、linux系统使用cp命令即可将一个文件夹里面的文件复制到另外一个文件夹里面。这个命令相当于dos下面的copy命令,具体用法是:cp_r源文件目的文件,其中参数r是指连同源文件中的子目录一同拷贝。 3、Linux cp命令主要用于复制文件或目录,英…

    2024年5月23日
    3900
  • 关于pythonexcel打印设置字体的信息

    如何使用python更改excel表中的字体属性 字体,背景,边框等的颜色都可以通过三种方式设置:索引,aRGB或主题。 索引颜色是旧版实现,颜色本身取决于工作薄或应用程序默认提供的索引。主题颜色可用于互补色,但也取决于工作薄中存在的主题,因此,建议使用RGB颜色。 有着一定的参考价值,有需要的朋友可以参考一下可使用的第三方库python中处理excel表格…

    2024年5月23日
    4600
  • 关于linuxjpeg下载的信息

    请问怎么用grub2直接引导win10,本人Linux新手 第一步,当然是下载linux ubuntu1x的镜像了,这个小伙伴可以百度,去正规的网站现在,这里,我先提供一个站点:mirrors.xmu.edu.cn,厦门大学的信息与网络中心。里面有很多linux版本。有Deepin CenOS ubuntu什么什么的。 第一步:\x0d\x0a当然是下载Ub…

    2024年5月23日
    5200
  • 关于excel2013vc的信息

    如何利用VC++自动生成Excel表格 1、首先,我们需要点击文件菜单栏按钮。然后,我们点击生成EXE按钮。接下来,我们点击保存路径。然后,我们输入我们想要保存的文件名。最后,我们点击确定按钮。然后,我们便可以看到,在桌面生成了Excel表格了。 2、在主对话框中加入一个按钮 ID IDC_EXCELTEST Caption Test Excel 双击该按钮…

    2024年5月23日
    5200
  • 关于2t硬盘linux分区的信息

    linux硬盘2TB限制问题 1、Linux中进行磁盘分区一般是用fdisk这个命令,但是fdisk命令无法支持大于2TB以上的分区,而parted命令却是用于2TB以上大小的磁盘分区的工具。 2、asm无法识别2t磁盘是因为在分区的时候造成的,所以asm和linux都会有这个2T的限制。磁盘分区主要有MBR和GPT两种方式,发生2T限制的正是这个MBR方式…

    2024年5月23日
    8300
  • 关于linux下载geneontology的信息

    下载GO/KEGG某一pathway的genelist 功能(GO)或者通路(Pathway)富集分析时,都会涉及到 Background; 做分析时,分析工具会提供一些数据供使用者选择或者使用自定义的gene list。 clusterProfiler是一个功能强大的R包,同时支持GO和KEGG的富集分析,而且可视化功能非常的优秀,本章主要介绍利用这个R包…

    2024年5月23日
    5000

发表回复

登录后才能评论



关注微信