如何通过makePostRequest()中的ajax调用发送文件,并通过控制器中的请求参数获取它

时间:2017-06-14 10:38:24

标签: java html ajax

my html code:
<input type="file" id="myFile" name="files[]">

ajax code:
var file = document.getElementById('myFile').files[0].name;
var poststr = 'file='+ escape(file)+'&key='+ escape('project_creation');
makePOSTRequest('controller', poststr,'bdy');

Controller:
if (param.equals("project_creation")) {
    param="project_creation";
    int proj_id = hlp.createProject(req,emp_id);
}

在通过请求检索时,我只获取文件名。我需要将文件保存在本地路径中。

任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:1)

您的代码仅用于读取文件名,如果要保存文件,因此您必须在ajax调用中发送文件内容,并通过服务器编码保存,请检查以下有助于读取文件内容的代码,

var myFunction = function(){
var input = document.getElementById('myFile');
var reader = new FileReader();
reader.onload = function(){
    var dataURL = reader.result;

    console.log(input.files[0]); //Files property, size, name, type
    console.log(dataURL); //File content in base64

    var fileName = input.files[0].name; //File Name
    var poststr = 'file='+ escape(dataURL)+'filename='+ escape(fileName)+'&key='+ escape('project_creation'); //Prepare URL params
    makePOSTRequest('controller', poststr,'bdy');
};
reader.readAsDataURL(input.files[0]);

}

我在javascript中遇到了与文件读取相同的问题,这段代码对我有用。 我在javascript中遇到了与文件读取相同的问题,这段代码也适用于我。

答案 1 :(得分:0)

你使用过表格吗?所以不要忘记将属性enctype="multipart/form-data"添加到表单元素中。