के साथ शेयरपॉइंट पर ठीक से एन्कोडेड (बेस 64?) छवि अपलोड करें, मैं SharePoint पर एक छवि फ़ाइल अपलोड करने में सक्षम हूं, लेकिन इसे एक छवि के रूप में पहचाना नहीं जा रहा है। मैं अनुसंधान कहा गया है कि छवियों जब SharePoint में अपलोड किया इनकोडिंग base64 होने की जरूरत के आधार पर निम्न निर्देश का उपयोग करने की कोशिश की है, लेकिन यह अभी भी एक फ़ाइल भ्रष्ट हो गया लगता है कि अपलोड करता है: https://github.com/adonespitogo/angular-base64-uploadAngularJS
मैं इस निर्देश का उपयोग करने के लिए खुश हूँ, लेकिन हूँ मुझे SharePoint की REST API में जो चाहिए उसे पास करने के बारे में अनिश्चित।
मूल पुनरावृत्ति मैंने इस निर्देश का उपयोग नहीं किया है, लेकिन यह सीधे अपलोड प्रयास से अधिक है।
1) सफलतापूर्वक बिना यह "भ्रष्ट" किया जा रहा एक छवि अपलोड, और इस बेस 64 एन्कोडिंग की आवश्यकता होती है/मैं यह कैसे प्राप्त करते हैं:
मैं क्या प्राप्त करने की आवश्यकता इस प्रकार है?
2) उनके नाम (नहीं "test.jpg" द्वारा छवियों को अपलोड करें) और कुछ मेटाडाटा (पूर्व के लिए शीर्षक या विभाग नाम से वह संबंधित के साथ एक छवि)
पुनरावृत्ति 1 अपलोड करें:। कोई निर्देशक यहाँ मेरी HTML है (कृपया ध्यान दें कि नियंत्रक एनजी-मार्ग के माध्यम से पेज से जुड़ा हुआ है):
$scope.filesChanged = function (elm) {
$scope.files = elm.files
$scope.$apply();
}
$scope.upload = function() {
var fd = new FormData()
angular.forEach($scope.files,function(file){
fd.append('file',file)
})
$http.post("/sites/asite/_api/web/lists/getByTitle('Images')/RootFolder/Files/add(url='test.jpg',overwrite='true')", fd,
{
transformRequest: angular.identity,
headers: {
'Content-Type':undefined, 'X-RequestDigest': $("#__REQUESTDIGEST").val()}
}).success(function (d) {
console.log(d);
});
}
:
<div class="col-md-12">
<form>
<input type="file" onchange="angular.element(this).scope().filesChanged(this)" data-ng-model="files" multiple>
<button data-ng-click="upload()">Submit</button>
<li data-ng-repeat="file in files">{{file.name}}</li>
</form>
</div>
यहाँ मेरी नियंत्रक है
अद्यतन: मुझे विश्वास है कि यह मुद्दा शेयरपॉइंट पर मेरे $ http पोस्ट को अलग कर दिया गया है। ऊपर उल्लिखित निर्देश का उपयोग करके, मैं बेस 64 को आउटपुट करने में सक्षम हूं, लेकिन मुझे यह सुनिश्चित नहीं है कि अपलोड के लिए मेरी पोस्ट में इसे कैसे पास किया जाए।
पुनरावृत्ति 2:
<form>
<input type="file" data-ng-model="files" base-sixty-four-input>
<button data-ng-click="upload()">Submit</button>
</form>
मेरे नियंत्रक कि SharePoint करने के लिए भ्रष्ट छवि फ़ाइलों को पोस्ट कर रहा है:
$scope.upload = function() {
console.log($scope.files); // Output result from upload directive
$http({
method: 'POST',
url: "/sites/ens/_api/web/lists/getByTitle('Report Images')/RootFolder/Files/add(url='" + $scope.files.filename +"',overwrite='true')",
headers: {
'Content-Type': false ,
'X-RequestDigest': $("#__REQUESTDIGEST").val()
},
data: $scope.files,
}).success(function (data) {
console.log(data);
});
}
अद्यतन निर्देशक यहाँ का उपयोग करते हुए अपने मौजूदा https://github.com/adonespitogo/angular-base64-upload निर्देशों का उपयोग एचटीएमएल है 2: निम्नानुसार SP.RequestExecutor का उपयोग करके एक ही परिणाम बनाता है। एक फ़ाइल अपलोड लेकिन प्रतिपादन नहीं। यह छवियों और दस्तावेजों के लिए होता है:
पुनरावृत्ति 3: निर्देशक और SP.RequestExecutor
$scope.upload = function() {
var dataURL = 'data:' + $scope.files.filetype + ';' + 'base64,' + $scope.files.base64;
var createitem = new SP.RequestExecutor("/sites/asite");
createitem.executeAsync({
url: "/sites/asite/_api/web/lists/getByTitle('Images')/RootFolder/Files/add(url='" + $scope.files.filename + "')",
method: "POST",
binaryStringRequestBody: true,
body: dataURL,
success: fsucc,
error: ferr,
state: "Update"
});
function fsucc(data) {
alert('success');
}
function ferr(data) {
alert('error\n\n' + data.statusText + "\n\n" + data.responseText);
}
}
का उपयोग करते हुए अद्यतन 3: .ajax का उपयोग करते हुए इस प्रकार है, इसे सफलतापूर्वक छवि पोस्ट करेंगे, लेकिन जब का उपयोग कर $ http, यह छवि दूषित करता है।
पुनरावृत्ति 3: का उपयोग करना .Ajax (काम करता है)
function uploadFileSync(spWebUrl , library, filename, file)
{
var reader = new FileReader();
reader.onloadend = function(evt)
{
if (evt.target.readyState == FileReader.DONE)
{
var buffer = evt.target.result;
var completeUrl = spWebUrl
+ "/_api/web/lists/getByTitle('"+ library +"')"
+ "/RootFolder/Files/add(url='"+ filename +"',overwrite='true')?"
+ "@TargetLibrary='"+library+"'&@TargetFileName='"+ filename +"'";
$.ajax({
url: completeUrl,
type: "POST",
data: buffer,
async: false,
processData: false,
headers: {
"accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"content-length": buffer.byteLength
},
complete: function (data) {
//uploaded pic url
console.log(data.responseJSON.d.ServerRelativeUrl);
$route.reload();
},
error: function (err) {
alert('failed');
}
});
}
};
reader.readAsArrayBuffer(file);
}
पुनरावृत्ति 4: $ http (भ्रष्ट छवि) का उपयोग करना
function uploadFileSync(spWebUrl , library, filename, file)
{
var reader = new FileReader();
reader.onloadend = function (evt) {
if (evt.target.readyState == FileReader.DONE) {
var buffer = evt.target.result;
var completeUrl = spWebUrl
+ "/_api/web/lists/getByTitle('" + library + "')"
+ "/RootFolder/Files/add(url='" + filename + "',overwrite='true')?"
+ "@TargetLibrary='" + library + "'&@TargetFileName='" + filename + "'";
$http({
url: completeUrl,
method: "POST",
data: buffer,
processData: false,
headers: {
"accept": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"content-length": buffer.byteLength
}
}).success(function (data) {
//uploaded pic url
//console.log(data.responseJSON.d.ServerRelativeUrl);
$route.reload();
}).error(function (err) {
alert(err);
});
}
};
reader.readAsArrayBuffer(file);
}
ऐसी कोई किस्मत नहीं। यह इस लाइन पर "संपत्ति सेट करने में असमर्थ" अनिश्चित या शून्य संदर्भ के फोटो में विफल रहा है: $ scope.data.Photo = base64Image.replace (/ डेटा: छवि \/jpeg; base64,/g, '') ; – Kode
अपने नियंत्रक के शीर्ष पर, _ $ scope.data_ को ऑब्जेक्ट के रूप में प्रारंभ करने का प्रयास करें: ** $ scope.data = {} ** – arman1991
यह समस्या डेटा के मेरे पोस्टिंग के साथ प्रतीत होती है। क्या आप मेरे अपलोड फ़ंक्शन को देख सकते हैं और देख सकते हैं कि यह सही डेटा क्यों नहीं पारित कर रहा है/मैं बेस 64 को कैसे विशेष रूप से पोस्ट करूं? – Kode