我试图通过jquery ajax提交传递文件对象.
JSP代码
<div id="import-file">
<input type="file" id="file"/>
<table>
<tr><td><input type="radio" name="type" value="csv"></td><td>CSV File</td></tr>
<tr><td><input type="radio" name="type" value="excel"></td><td>Excel spread sheet</td></tr>
<tr><td><input type="radio" name="type" value="tab"></td><td>Tab delimited</td></tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
Java脚本代码
var type = $($('input:radio:checked')[0]).val();
var file = $("#file")[0].files[0];
alert($("#file")[0].files[0].name);
$.ajax({
data :{
"file" : file,
"type" : type
},
type: "POST",
url: "fileupload.htm",
success: function(data){
alert(data);
},
error:function(err){
alert(err);
}
});
Run Code Online (Sandbox Code Playgroud)
最后这里是我的春季控制器代码:
@RequestMapping(value="fileupload.htm",method=RequestMethod.POST )
public @ResponseBody String uploadFile(@RequestParam String type, @RequestParam("file") MultipartFile file){
logger.info("file type : "+type + "file is "+file.toString());
return …Run Code Online (Sandbox Code Playgroud) 我正在实现Jasny File Input插件.但是,我无法将其上传到服务器.
HTML
<form method="post" id="formCreateMod" class="form form-horizontal" enctype="multipart/form-data" role="form">
<div class="fileinput fileinput-new" data-provides="fileinput">
<div class="fileinput-preview thumbnail" data-trigger="fileinput"></div>
<div>
<span class="btn btn-default btn-file"><span class="fileinput-new">Select image</span><span class="fileinput-exists">Change</span><input type="file" name="img"></span>
<a href="#" class="btn btn-default fileinput-exists" data-dismiss="fileinput">Delete</a>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
上面的代码段位于<form>代码中.然后我在jQuery中使用post将表单的序列化数据发送到服务器.
我希望通过使用$_FILES['img']["name"]或获取php中的内容$_FILES['img']["type"],但结果是NULL.
那么在图像发布后我应该如何在php中检索图像数据?
任何帮助将不胜感激!
更新
以下是我在jQuery中发布表单的方法.
var theForm = $('form');
$.post(location.href, theForm.serialize(), function(data) {
// handle return data
});
Run Code Online (Sandbox Code Playgroud) php jquery file-upload twitter-bootstrap twitter-bootstrap-3
我通过AJAX传递表单数据:
var data = new FormData();
data.append('username', username);
data.append('company', company);
$.ajax({
url: 'path to service',
type: 'POST',
enctype: 'multipart/form-data',
async: true,
contentType: 'multipart/form-data',
processData: false,
data: data,
cache: false,
success: function(data){
},
error: function(error){
}
});
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
请求被拒绝,因为没有找到多部分边界
美好的一天,我有一个表单,用于将字段和文件发送到node.js服务器.在服务器上由Formidable解析的数据.一切都运行良好,但在表单提交后,它会加载一个带有响应的页面.有没有人知道使用标准表单机制发送数据的方式而不是重新加载页面(带有serialize的jQuery ajax方法因为表单中的文件而无法工作)要么在服务器上写这样的响应,所以它不会触发页面重新加载.形成:
<form action="/upload" enctype="multipart/form-data" method="post" id="eventForm">
<label>Date</label>
<input type="text" name="date"/>
<label>Image</label>
<input type="file" multiple="multiple" name="picture" />
<input type="submit" value="Submit!" />
</form>
Run Code Online (Sandbox Code Playgroud)
服务器端:
app.post('/upload', function (req, res) {
var form = new formidable.IncomingForm();
// save file code goes here
form.parse(req, function(err, fields, files) {
//response code goes here
res.send('done');
});
});
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?谢谢!
我想用ajax提交表单。我从使用 FormData 中获取数据,如下所示:
var data = new FormData($(this)[0]);
Run Code Online (Sandbox Code Playgroud)
表单的输入之一是 HSV 格式的颜色值。我想将其转换为十六进制值。我有一个 jquery 函数来转换它,但我不知道如何在 FormData 中操作它的值。
另一个问题是:如何从 FormData 中删除某些字段(键、值)?
jquery ×4
ajax ×3
forms ×2
javascript ×2
file-upload ×1
formidable ×1
node.js ×1
php ×1
spring ×1