上传或更新文件匹配表中行的objectId
Parse JavaScript Upload or update file match objectId of row in table
我也是Parse.com的新手。我已经通过Javascript完成了上传文件,但我想通过查找"objectId"来对类中的一行进行文件上传。但我找不到任何解决办法:(
下面是我的代码,我上传文件…
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="http://www.parsecdn.com/js/parse-1.2.15.min.js"></script>
<script type="text/javascript">
Parse.initialize("2Rsgjz6VQiozYpqQClfmBHQASTTtrdQpUoe2", "fIccKcC9sMH48CKkGYIk62wsA8tTgPpByip");
$(function() {
var file;
// Set an event listener on the Choose File field.
$('#fileselect').bind("change", function(e) {
var files = e.target.files || e.dataTransfer.files;
// Our file var now holds the selected file
file = files[0];
});
// This function is called when the user clicks on Upload to Parse. It will create the REST API request to upload this image to Parse.
$('#uploadbutton').click(function() {
var serverUrl = 'https://api.parse.com/1/files/' + file.name;
$.ajax({
type: "POST",
beforeSend: function(request) {
request.setRequestHeader("X-Parse-Application-Id", '2Rsgjz6VQiozYpxWBfmBHQASTTtrdQpUoe2');
request.setRequestHeader("X-Parse-REST-API-Key", 'UPxPXDIkkC6lc52TYpQZ4bX5DjrWH9Wy7');
request.setRequestHeader("Content-Type", file.type);
},
url: serverUrl,
data: file,
processData: false,
contentType: false,
dataType: 'json',
success: function(data) {
var file_input = document.getElementById("url").innerHTML = '<a href="' + data.url + '">'+ data.url + '</a>';
var classUrl = "https://api.parse.com/1/classes/sampleClass"
if(data) {
var fileName = "" + data.name;
$.ajax({
type: "POST",
beforeSend: function(request) {
request.setRequestHeader("X-Parse-Application-Id", '2Rsgjz6VQiozYpqQClcxWBfmBHQASTTtrdQpUoe2');
request.setRequestHeader("X-Parse-REST-API-Key", 'UPxPXDIkkCLY2M2b56lc52TYpQZ4bX5DjrWH9Wy7');
request.setRequestHeader("Content-Type", 'application/json');
},
url: classUrl,
data: '{"upload" : {"name" : '+"'""+fileName+"'""+', "__type" : "File"}}',
processData: false,
success: function(data) {
console.log("Image successfully uploaded.");
},
error: function(error) {
console.log("Error: " + error.message);
}
});
} else {
//Data is null
console.log("Data IS NULL");
}
},
error: function(data) {
var obj = jQuery.parseJSON(data);
alert(obj.error);
}
});
});
});
</script>
</head>
<body>
<div id="url">
</div>
<form id="fileupload" name="fileupload" enctype="multipart/form-data" method="post">
<fieldset>
<input type="file" name="fileselect" id="fileselect"></input>
<input id="uploadbutton" type="button" value="Upload to Parse"/>
</fieldset>
</form>
</body>
</html>
我解决了。只需在第二个"ajax"POST"替换为"PUT",并在url中设置要更新的对象的"objectId",以更新现有文件。我的代码如下…
$(document).ready(function() {
//Init Parse SDK
Parse.initialize("yourappkey", "yourjskey");
//File Upload
var file;
// Set an event listener on the Choose File field.
$('#fileselect').bind("change", function(e) {
var files = e.target.files || e.dataTransfer.files;
// Our file var now holds the selected file
file = files[0];
});
// This function is called when the user clicks on Upload to Parse. It will create the REST API request to upload this image to Parse.
$('#uploadbutton').click(function() {
var serverUrl = 'https://api.parse.com/1/files/' + file.name;
$.ajax({
type: "POST",
beforeSend: function(request) {
request.setRequestHeader("X-Parse-Application-Id", 'yourappid');
request.setRequestHeader("X-Parse-REST-API-Key", 'yourrestapikey');
request.setRequestHeader("Content-Type", file.type);
},
url: serverUrl,
data: file,
processData: false,
contentType: false,
dataType: 'json',
success: function(data) {
//Change variable to reflect your class to upload to
var classUrl = "https://api.parse.com/1/classes/ClassName/objectId"
if(data) {
var fileName = "" + data.name;
$.ajax({
type: "PUT",
beforeSend: function(request) {
request.setRequestHeader("X-Parse-Application-Id", 'yourappid');
request.setRequestHeader("X-Parse-REST-API-Key", 'yourrestapikey');
request.setRequestHeader("Content-Type", 'application/json');
},
url: classUrl,
data: '{"upload" : {"name" : '+"'""+fileName+"'""+', "__type" : "File"}}',
processData: false,
success: function(data) {
console.log("Image successfully uploaded.");
},
error: function(error) {
console.log("Error: " + error.message);
}
});
} else {
//Data is null
console.log("Data IS NULL");
}
},
error: function(data) {
var obj = jQuery.parseJSON(data);
alert(obj.error);
}
});
});
});
相关文章:
- Javascript循环不会自我更新
- 添加文字和评论功能更新Div
- AngularJS:ng之后,重复$scope值未按预期更新
- 如何通过数组更新角度子范围
- Ajax聊天消息重复而不仅仅是更新
- 通过CSV文件上载更新数据库表
- 平均值:无法将数据更新到数据库
- $rootScope未使用forEach进行更新
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- Angular:更新一次性绑定的数据
- Javascript更新孙窗口中的表单元素
- 使用AngularJS中的筛选器更新给定的表
- 如何缩短MongoDB ObjectId并在Mongoose模式中使用它
- 从选项页面更新chrome扩展清单权限
- 如何在不刷新页面的情况下更新显示框
- 延期承诺值未更新/解析/延期
- 标记的实时更新,无需加载页面谷歌地图API V3
- 上传或更新文件匹配表中行的objectId
- MongoDB:如何基于ObjectID更新n条记录