【问题标题】:how to send file through ajax call in makePostRequest() and get it through request parameter in controller如何通过makePostRequest()中的ajax调用发送文件并通过控制器中的请求参数获取它
【发布时间】:2017-11-16 11:09:36
【问题描述】:
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);
}

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

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

【问题讨论】:

  • 不是在 Controller 中检查 project_creation,而是检查 key,因为您正在发送 project_creation 的值是通过 key 发送的。

标签: java html ajax


【解决方案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 读取文件时遇到了同样的问题,这段代码对我有用。

【讨论】:

  • 使用new FileReader();读取文件,使用input.files[0]读取文件属性
  • 感谢 Maqsud...它确实有效....但是请告诉我如何在控制器中检查此文件并将其保存在服务器/本地路径中???
  • Rabindra,使用 new FileReader(); 可以发送文件内容,请参考链接,有助于在 JAVA 中读取服务器端文件 https://stackoverflow.com/questions/23979842/convert-base64-string-to-image
【解决方案2】:

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

【讨论】:

  • 不,我没有使用过Form。全部只在 div 中定义。
  • 好的,所以你还要读取文件内容,var file = document.getElementById('myFile').files[0].name,这段代码只返回文件名,new FileReader()函数返回文件内容,让我再回答一次。所以会有帮助的。
猜你喜欢
  • 2015-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
相关资源
最近更新 更多