- 前端页面上传代码
- 最简代码
<script type="text/javascript" src="/jquery-1.11.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="/uploadify-3.2.1/uploadify.css" />
<script type="text/javascript" src="/uploadify-3.2.1/jquery.uploadify.min.js"></script>
<script type="text/javascript">
$(function() {
var options = {
"swf" : "/uploadify-3.2.1/uploadify.swf",//flash地址
"uploader" : "/upload",//上传请求处理地址
"fileObjName" : "file",//文件对象名
"fileSizeLimit": 2048,//2M,文件大小限制
"fileTypeExts":"*.png;*.jpg;*.pdf;*.jpeg",//文件类型限制,分号分隔
"formData":{type:"image"},//传入表单参数
"successTimeout" : 90,//超时设置
};
$("#file_upload1").uploadify($.extend(options, {//多个上传按钮时用options提供公用配置
"formData":{type:"image"}, //这里提供特定配置(这会改变options,是个对后面的uploadify调用不友好的副作用)onUploadSuccess:function(file, data, response){//data可以是字符串domain+path,不支持json返回格式
var paths = data.split(",");//数据库存相对路径path,访问时拼接domain+path即可
$("#path1").val(paths[1]).next("a").attr("href",paths[0]+paths[1]).text(file.name);
}
}));
});
</script>
<input type="file" name="file1" id="file_upload1" /> - 简单封装,
<script src="$static_url/admin/js/uploadify-3.2.1/uploadify.settings.js"></script>var static_url = "/resources";//修改js需要用到的资源和上传路径
var upload = "http://114.215.183.178:8090";
var settings = {
swf : static_url+"/admin/js/uploadify-3.2.1/uploadify.swf",
cancelImg : static_url+"/admin/js/uploadify-3.2.1/uploadify-cancel.png",
buttonText : "选择文件...",
uploader : upload+"/upload/temp",
formData : {type : "image" },
fileObjName : "file",
fileTypeExts : "*.png;*.jpg;*.jpeg",
fileTypeDesc : "图片文件",
fileSizeLimit : 2048,
successTimeout : 90
};
/**
* @param fileInputId <input type="file" id="fileInputId"/>
* @param pathInputId <input id="pathInputId"/>
*/
function uploadify(fileInputId, pathInputId){
$(fileInputId).uploadify(jQuery.extend(settings, {
onUploadSuccess:function(file, data, response){
var paths = data.split(",");
$(pathInputId).val(paths[1]).next("a").attr("href",paths[0]+paths[1]).text("预览");
}
}));
}
uploadify("#idFrontCopyFile", "#idFrontCopy"); //这里的id与上传按钮html对应<div class="button-all">
<div class="button-left">
<input id="idFrontCopy" name="idFrontCopy" class="Mtext1-1" readonly /><a href="" target="_blank"></a>
</div>
<div class="button-right">
<input id="idFrontCopyFile" type="file" name="idFrontCopyFile" />
</div>
</div>
- 参数详解
- onUploadSuccess,参数格式参考uploadify.js源码
- 资源访问:
- buttonImage+button_image_url,修改uploadify.js,当没有提供按钮图片时不去请求根路径/
this.settings.button_image_url = this.settings.button_image_url ? SWFUpload.completeURL(this.settings.button_image_url) : this.settings.button_image_url - uploadify-cancel.png,修改uploadify.css,
.uploadify-queue-item .cancel a {
background: url(‘uploadify-cancel.png‘) 0 0 no-repeat
- 错误处理
- uploadError: HTTP ERROR : File ID: SWFUpload_0_0. HTTP Status: 406.
当button_image_url找不到时报错406
上传文件后可以返回1,或path字符串,不支持json串(需要返回表示上传成功的东西,否则uploadify会认为上传失败) - uploadError : IO Error : File ID: SWFUpload_0_0. IO Error: Error #2038
可能是fileObjName对不上,或返回结果不正确
可能是host没有对应,比如localhost访问外网ip的uploadify.swf,这时需要在外网的根路径下提供权限文件http://host/crossdomain.xml<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
- 后端请求处理
- 样例
@RequestMapping("")
public Object upload(@RequestParam String type, MultipartFile file) {
String path = path(type, file.getOriginalFilename());
File target = new File(props.getProperty("uploads"), path);
boolean save = save(target, file);
if(save) {
return string(props.getProperty("uploads_domain")+","+path);
}
return null;//返回null表示上传失败
}
private String string(String string) {//处理uploadify得到结果路径中乱码问题
return StringUtils.newStringIso8859_1(StringUtils.getBytesUtf8(string));
}
- 代码上传文件
- 样例,需要引用httpmime模块,org.apache.httpcomponents:httpmime:4.3.4
private HttpClient client = HttpClients.createDefault();
private String testFile = "E:/系统默认形象1.0_161.png";
private static ContentType textUtf8 = ContentType.create("text/plain", Consts.UTF_8);
@Test
public void upload() throws ClientProtocolException, IOException {
HttpEntity entity = MultipartEntityBuilder.create()
.setMode(HttpMultipartMode.RFC6532)//BROWSER_COMPATIBLE自定义charset,RFC6532=utf-8,STRICT=iso-8859-1
.addTextBody("name", testFile, textUtf8)//中文文件名还是需要传utf-8编码
.addBinaryBody("file", new File(testFile))
.build();
HttpUriRequest post = RequestBuilder.post()
.setUri("http://localhost:8080/upload")
.setEntity(entity).build();
HttpResponse response = client.execute(post);
System.out.println(response.getStatusLine().getStatusCode() + " => " + IOUtils.toString(response.getEntity().getContent(), "utf-8"));
}
uploadify文件上传
时间: 2024-10-25 01:19:43
uploadify文件上传的相关文章
jQuery.uploadify文件上传组件实例讲解
1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好,无刷新,带上传进度等等.在最近的短信平台开发中,使用Uploadify进行文件上传. Uploadify官网地址是:http://www.uploadify.com/ 可满足项目开发需求. 下载地址:http://www.uploadify.com/wp-content/uploads/files/
详解jQuery uploadify文件上传插件的使用方法
uploadify这个插件是基于js里面的jquery库写的.结合了ajax和flash,实现了这个多线程上传的功能. 现在最新版为3.2.1. 在线实例 实例中用到的php文件UploaderDemo.php请在页面下方下载 引入文件 <link rel="stylesheet" type="text/css" href="uploadify.css" /> <script type="text/javascript
记录-Jquery uploadify文件上传实例
原本做的是from表单的文件上传,后来因需要用ajax异步,so接触到了Jquery uploadify上传 贴上代码,以供参考 需要引入的js文件 <link href="../res/uploadify/uploadify.css" rel="stylesheet" type="text/css" /> <script src="../res/uploadify/jquery.uploadify.min.js&qu
jQuery uploadify 文件上传
uploadify这个插件是基于js里面的jquery库写的.结合了ajax和flash,实现了这个多线程上传的功能.现在最新版为3.2.1. 在线实例 实例预览 Uploadify 在线实例Demo演示 实例中用到的php文件UploaderDemo.php请在页面下方下载 引入文件 <link rel="stylesheet" type="text/css" href="uploadify.css" /> <script t
2.火狐浏览器上,uploadify文件上传不兼容,和session重新发起的问题
前段时间做表单中有文件上传的功能,主要是因为用uploadify上传,发生了问题: 问题描述1:用uploadify实现文件上传时,遇到在火狐上不兼容问题,uploadify样式无法加载的问题,这个简单,直接在火狐浏览器上安装flash插件就可以了解决, 问题描述2:使用uploadify上传文件时,发现上传文件的session(以下就叫file_session)和提交表单的session(sub_session)不一样.在提交表单的Action中我们想要获取之前的请求在session设置的值时
结合项目(Spring+(基于注解的)SpringMVC和Mybatis+uploadify文件上传)--poi解析Excel文件
poi解析Excel文件 1.上传文件至服务器 2.解析Excel文件并返回数据集合 3.将数据保存到服务器 框架======Spring+(基于注解的)SpringMVC和Mybatis===== 第一步: 前台: jsp文件采用的是uploadify <div id="fileQueue"></div> <input type="file" id="brandFile"> js: <script ty
uploadify文件上传的使用
1.jsp代码 1 appname=$("#appname").val(); 2 $("#uploadify").uploadify({ 3 'swf' : '<%=basePath%>/Backstage/Style/jQuery-uploadify/uploadify.swf', 4 // 'script' : 'ProductAction!fileUpload.do',//后台处理的请求 5 'uploader': 'AppVersionActio
文件上传~Uploadify上传控件~续(多文件上传)
对于Uploadify文件上传之前已经讲过一次(文件上传~Uploadify上传控件),只不过没有涉及到多文件的上传,这回主要说一下多个文件的上传,首先,我们要清楚一个概念,多文件上传前端Uploadify是通过轮训的方式去调用我们的后台upload程序的,所以,对于多文件上传来说,也没什么稀奇的. 下面是文件上传后的缩略图如下 列表的组装使用JS模板,这样对于复杂的HTML结构来说,可以减少拼写错误的出现,关闭是将LI元素从UI元素移除,最后提交时,从UI里检查LI元素,然后对它进行组装,并进
web实现大文件上传分片上传断点续传
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下