ואיזה במקביל?
תודה!
ואיזה במקביל?
תודה!
אשמח גם לשמוע המלצה על מיקסר שיכול ללוש 3+ קילו בצק קמח מלא 100% ללא בעיות
שימוש מדי שבוע.
@dovid אמר באיך נכון לסדר דאטא במערכים:
בעדכון הוא פר המזהה
איך מוצאים אותו, עוברים על כל המערך?
@dovid אמר באיך נכון לסדר דאטא במערכים:
אהממ לא הכי ברור השאלה.
מצאתי א"ז בבוקר, משהו אינדקס, שמקבל פנקצייה.
כהמשך לאשכול הזה
נניח ויש לי מערך ענק
ועורכים אותו בחלקים בקלינט
איך אני ניגש הכי בטוח וקל לאיבר שערכתי עכשיו בקלינט - בשרת?
מצד אחד אוביקט הכי קל, כי ניגשים מיד לפי המפתח, אבל החסרון שזה לא מסודר לפי הסדר (אא"כ אמיין שוב ושוב עם פונקצית sort), מה שיתרון במערך.
על הדרך
מה שם הפונקציה שמוצאת אוביקט לפי מאפיין ב-ES6?
תיקון
@אהרן אמר בקביעת יעד ושם קובץ דינמיים ב-multer:
var storage = multer.diskStorage({ כאן צריך ליצור לבד את התיקיה destination: function (req, file, cb) { cb(null, '/jobs/' + destName); },
let multer = require('multer')
app.post('/tchumim/ajax/createNewProject', createNewProject);
function createNewProject( req , res ) {
let destName = 'job' + (new Date().getTime());
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/jobs/' + destName);
},
filename: function (req, file, cb) {
cb(null, destName);
}
})
let upload = multer({ storage: storage }).single('file');
upload(req, res, function(err){
})
}
נראה עובד מצוין, ב"ה.
המימוש נראה נכון?
@clickone אמר בפתיחת אלמנט אינפוט פייל ע"י לחיצה על דיב שממוקם מעליו, אפשרי?:
תיזהר @magicode כאן
לא נראה.
עובד!!!!!! אוהההההה
צריך הידר headers: { 'Content-Type': undefined}
אחרת הוא מניח שזה בינארי וצועק (אם הבנתי נכון).
המולטר אכן לא עושה כלום
בבאדי יש מלא מידע בסטרינג ארוך, א"א או קשה לפיענוח.
{ '------WebKitFormBoundaryhsVAP9BjmAAZD3na\r\nContent-Disposition: form-data; name': '"file"; filename="aaaa.txt"\r\nContent-Type: text/plain\r\n\r\naharon\r\n------WebKitFormBoundaryhsVAP9BjmAAZD3na\r\nContent-Disposition: form-data; name="file2"\r\n\r\nddd\r\n------WebKitFormBoundaryhsVAP9BjmAAZD3na--\r\n' }
משהו מתחיל לזוז
החזרתי את
var bodyParser = require('body-parser');
// parse application/json
app.use(bodyParser.json({ limit: '50mb' }));
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
אבל ראיתי בסטוק שצריך להפוך את הסדר בין השורה השניה לשלישית (פה זה כבר בסדר הנכון)
והוא אכן פירק יפה וה-body אכן מכיל תוכן כולל את הקובץ, מנסה להפוך א"ז למשהו מובן, וגם לבדוק איך זה עובד במקביל לmulter.
משהו נוסף שתקע אותי, שהקוד הזה
app.use(express.bodyParser());
הוציא שגיאה שהקלט לא ג'ייסון (הוא לא מזהה א"ז לבד?? ומה אם צריך א"ז רק בחלק מהכתובות??)
@dovid אמר בפתיחת אלמנט אינפוט פייל ע"י לחיצה על דיב שממוקם מעליו, אפשרי?:
הקוד (צד שרת) פולט שגיאה כל שהיא? לפי התיעוד שלהם זה אמור לעבוד לך.
שום שגיאה
הפלט
createNewProject
undefined
undefined
@dovid אמר בפתיחת אלמנט אינפוט פייל ע"י לחיצה על דיב שממוקם מעליו, אפשרי?:
(נ.ב. הקוד שלך לא הכי נעים לקריאה
ראית פה מישהו שמרט את שערות ראשו ונשאר יפה?
בקשר להזחות, אולי בגלל שזה חלקים מפונציות אחרות?
ובנוגע לנקודה פסיק, דווקא אני מנסה להקפיד ע"ז, חוץ מבקונסול שם אני לא שם, שתהיה לי התראה ואמחוק.
צד שרת
const express = require('express');
const app = express();
let multer = require('multer')
let upload = multer({ dest: 'uploads/' })
app.post('/tchumim/ajax/createNewProject', upload.single('file'), createNewProject);
function createNewProject( req , res ) {
'use strict';
console.log('createNewProject')
let body = req.body;
console.dir( body )
console.dir( req.file )
<textarea drop-zone upload-data="vm.uploadData" ng-model="vm.uploadData.text"
class="one"
placeholder="גררו לכאן את הקובץ הרצוי,
או הדביקו כאן את הטקסט"
/>
<button ng-click="vm.createNewProject()" >
צור פרויקט
<span ng-if="vm.uploadData.projectName">"{{vm.uploadData.projectName}}"</span>
</button>
.directive('dropZone', ['$http', function($http){
return {
scope: {
uploadData: '=',
},
link: function (scope, element, attrs) {
element.bind("drop", function (e) {
e.stopPropagation();
e.preventDefault();
let file = e.dataTransfer.files[0];
if (file.name.indexOf('.txt') != -1)
scope.uploadData.type = 'txt';
if (file.name.indexOf('.docx') != -1)
scope.uploadData.type = 'docx';
if( !scope.uploadData.type )
return alert('לא קובץ docx / txt');
if( scope.uploadData.text )
return alert('יש כבר טקסט')
scope.uploadData.fileObj = file;
});
element.bind("dragover", function (e) {
e.stopPropagation();
e.preventDefault();
e.dataTransfer.dropEffect = 'copy';
//console.log('dragover')
//console.log(e)
});
}
};
}]);
function createNewProject () {
if( vm.uploadData.text )
vm.uploadData.type = 'text'
if( !vm.uploadData.type )
return alert('אין תוכן לפרק')
if( !vm.uploadData.projectName )
return alert('אנא הגדר את שם הפרויקט')
let upData = false;
upData = new FormData();
upData.append('file', vm.uploadData.fileObj);
upData.append('file2', 'ddd');
console.log(upData)
console.log(vm.uploadData.fileObj)
for(let t of upData) {console.log(t)}
$http({
method: 'POST',
url: 'tchumim/ajax/createNewProject',
data: upData,
/*headers: { 'Content-Type': undefined}
headers: { 'Content-Type': 'application/json; charset=UTF-8' },*/
}).then( function( res ){
}, function(errRes){
serverError();
});
}
})
@dovid אמר בפתיחת אלמנט אינפוט פייל ע"י לחיצה על דיב שממוקם מעליו, אפשרי?:
נסה את המלצתו של @zvizvi.
body מגיע אנדיפיינד
אוף!!
עד עכשיו השתמשתי ב
app.use(express.bodyParser());
אבל עכשיו זה מחזיר שגיאה
Error: invalid json
אז החלפתי לזה:
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
וגם פה קבלתי שגיאה
PayloadTooLargeError: request entity too large
אין לי כבר כח
כשאני מדפיס console.log(vm.uploadData.fileObj) זה גם נראה בסדר
File(110866) {name: "חדשושן.docx", lastModified: 1520200202739, lastModifiedDate: Sun Mar 04 2018 23:50:02 GMT+0200 (שעון רגיל ירושלים), webkitRelativePath: "", size: 110866, …}
lastModified
:
1520200202739
lastModifiedDate
:
Sun Mar 04 2018 23:50:02 GMT+0200 (שעון רגיל ירושלים) {}
name
:
"חדשושן.docx"
size
:
110866
type
:
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
webkitRelativePath
:
""
__proto__
:
File
FormData {}__proto__: FormData
@dovid אמר בפתיחת אלמנט אינפוט פייל ע"י לחיצה על דיב שממוקם מעליו, אפשרי?:
(אגב למה שמת 'Content-Type': undefined ?, אולי זה הבעיה?)
לא, זה אחד הנסיונות לתקן את הבעיה.
זה הקוד בסרוור
app.post('/xxx/ajax/createNewProject', createNewProject);
function createNewProject( req , res ) {
'use strict';
console.log('createNewProject')
let body = req.body;
console.log( body.data )
console.dir( body )
הלוג:
undefined
{}