Extjs4 上传文件 如何设置谷歌浏览器的默认路径C:/fakepath?

Extjs4上传文件,如果用谷歌浏览器,它会给文件一个默认的上传路径,而把真实路径隐藏起来了。如何设置啊、?

4个回答

后台Java[code="java"]package controller;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;

public class upload extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    this.doPost(request, response);
}

@SuppressWarnings("deprecation")
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String hello = request.getParameter("savePath");
    String nttame = request.getParameter("name");
    HttpSession session = request.getSession();//通过session传参
    System.out.println("接收参数,hello="+hello+",name="+nttame);

    String name="";
    try {
        DiskFileUpload fu = new DiskFileUpload();
        // 设置允许用户上传文件大小,单位:字节,这里设为2m
        fu.setSizeMax(5 * 1024 * 1024 * 1024);
        // 设置最多只允许在内存中存储的数据,单位:字节
        fu.setSizeThreshold(10 * 1024 * 1024);
        // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
        fu.setRepositoryPath(System.getProperty("java.io.tmpdir"));
        fu.setHeaderEncoding("UTF-8");//解决中文文件名乱码。
        // 开始读取上传信息
        List fileItems = fu.parseRequest(request);
        // 依次处理每个上传的文件
        Iterator iter = fileItems.iterator();
        System.out.println(fileItems.size());
        while (iter.hasNext()) {
            FileItem item = (FileItem) iter.next();
            if (item.isFormField()) {//表单域的值
                System.out.println("表单域名" + item.getFieldName());
                System.out.println("表单值" + item);//如果不是文件表单域
                System.out.println("名字:"+item.getString());
            } else {
                name = item.getName();
                System.out.println("文件名:"+name);
                long size = item.getSize();
                if (name != null && !name.equals("") && size == 0) {
                    continue;
                }
                String path = request.getRealPath("");
                File uploadFolder = new File(path + "/upload");
                if (!uploadFolder.exists())
                    uploadFolder.mkdirs();
                File file=new File(path + "/upload/" + name);
                item.write(file);
            }
        }
        response.setContentType("text/html");// 必须设置返回类型为text,否则ext无法正确解析json字符串
        response.setCharacterEncoding("UTF-8");//设置编码字符集为utf-8,否则ext无法正确解析
        PrintWriter outs = response.getWriter();
        outs.write("{success:true}");
        outs.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}
[/code]

ExtJS的filefield默认都是伪装路径,真实路径在上传到后台的二进制流中,只能在后台进行读取

a3226988
a3226988 能给个例子吗?没用过这些
7 年多之前 回复
FangXingXing007
FangXingXing007 后台没必要用真实路径,直接用二进制流的方式或使用commons-upload或multipart等工具类就可以获取文件的内容
7 年多之前 回复
a3226988
a3226988 后台怎么取呢?
7 年多之前 回复

前台的js[code="js"]{
xtype : 'form',
title : '文件上传示例',
width : 400,
bodyPadding : 10,
margin : '50 10 50 80',
frame : true,
items : [ {
xtype : 'filefield',
name : 'fileName',
fieldLabel : '上传',
labelWidth : 50,
msgTarget : 'side',
allowBlank : false,
anchor : '100%',
buttonText : '选择文件'
} ],
buttons : [ {
text : '上传',
handler : function(button) {
var form = button.up('form').getForm();// 获得表单
// 通过表单的submit事件才能开始进行文件上传
if (form.isValid()) {// 所有表单域都通过了验证
form.submit( {
url : './upload',
waitMsg : '正在保存文件...',
success : function(fp, o) {
Ext.Msg.alert('提示信息', '文件成功上传');
form.findField('fileName').reset();
},
failure : function() {
Ext.Msg.alert('警告', '对不起,文件上传无法成功.');
}
});
}
}
} ]
} [/code]

用的文件上传处理工具是commons.fileupload自己下吧,版本好像没有太大影响

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐