سلام و خسته نباشید جناب قربانی عزیز
ممنون بابت آموزش عالی و پرانرژیتون
میخواستم بپرسم آیا میتونم با nodeJS وب سرویسی بنویسم که توی برنامم (با mvc) بتونم صداش بزنم و یه فایل رو روی سرور آپلود کنم یا از سرور دانلود کنم؟
اگر شدنیه ممنون میشم راهنماییم کنید
با سپاس فراوان
با سلام
خواهش میکنم
بله چرا نشه و اینکه میتونی فایل هم آپلود کنی . یه نگاهی به لینک زیر بندازی با استفاده از ماژول Express FileUpload میشه انجام داد.
سلام و تشکر بابت راهنمایی
خیلی تلاش کردم اما نرسیدم به سرمنزل مقصود، برای همین دوباره مزاحمتون شدم
طبق لینکی که داده بودید پیش رفتم، وقتی میخوام فایل و بفرستم سمت سرور به این ارور میخوره
با انواع روشهای ajax پیش رفتم، حتی جالبه توی مرورگر نشون میده که عکس رفته سمت سرور ولی اونور گویا نمیتونه بگیردش!
TypeError: Cannot read property mv of undefined
at c:\IAS\MyNode\uploadserver.js:36:12
at Layer.handle [as handle_request] (c:\IAS\MyNode\node_modules\express\lib\router\layer.js:95:5)
at next (c:\IAS\MyNode\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (c:\IAS\MyNode\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (c:\IAS\MyNode\node_modules\express\lib\router\layer.js:95:5)
at c:\IAS\MyNode\node_modules\express\lib\router\index.js:281:22
at Function.process_params (c:\IAS\MyNode\node_modules\express\lib\router\index.js:335:12)
at Busboy.next (c:\IAS\MyNode\node_modules\express\lib\router\index.js:275:10)
at Busboy.emit (events.js:187:15)
at Busboy.emit (c:\IAS\MyNode\node_modules\busboy\lib\main.js:38:33)</pre>
اینم کد سرور:
const express = require('express');
const fileUpload = require('express-fileupload');
const fs = require('fs');
const app = express();
app.use((req, res, next) => {
let now = new Date().toString();
let log = `${now} : ${req.method} ${req.url}`;
//console.log(log);
fs.appendFile('server.log', log + '\n', (err) => {
if (err) {
console.log('Unable to append to server.log');
}
});
next();
});
// default options
app.use(fileUpload());
app.post('/api/upload', function(req, res) {
res.header('Access-Control-Allow-Origin', "*");
if (!req.files)
res.status(400).send('No files were uploaded.');
// The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file
let sampleFile = req.files[0];
// Use the mv() method to place the file somewhere on your server
//console.log(sampleFile.name);
sampleFile.mv('/somewhere/on/your/server/filename.jpg', function(err) {
if (err)
return res.status(500).send(err);
res.send('File uploaded!');
});
});
app.listen(4000, function(a) {
console.log("Listening to port 4000");
});
اینم صدازدن توسط ajax:
var data = new FormData();
var files = $("#IdentityDocumentPic").get(0).files;
// Add the uploaded image content to the form data collection
if (files.length > 0) {
data.append("IdentityDocumentPic", files[0]);
}
// Make Ajax request with the contentType = false, and procesDate = false
var ajaxRequest = $.ajax({
type: "POST",
url: "localhost:4000/api/Upload/",
contentType: false,
processData: false,
data: data
});
ببخشید که زیاد شد، خیلی تلاش کردم که خودم بتونم ولی نشد :(
به به
خسته نباشی دلاور
خوب من خودم تست کردم و کدی که نوشتم کار میکنه و کد منو ببین تا بدونی کجای کارت میلنگه
const express = require('express');
const fileUpload = require('express-fileupload');
const path = require('path');
const app = express();
app.use(fileUpload());
app.use(express.static(__dirname + '/public'));
app.post('/upload', (req, res) => {
if (!req.files) {
return res.status(400).send('There is no file');
}
let example = req.files.example;
let fileName = req.files.example.name;
example.mv(path.join(__dirname, `img/${fileName}`) , (err) => {
if (err) {
return res.status(500).send();
}
res.send('File uploaded');
})
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
و اینم کدی اچ تی ام الی که درون فولدر public به عنوان index.html نوشتم
<html>
<body>
<form ref='uploadForm'
id='uploadForm'
action='http://localhost:3000/upload'
method='post'
encType="multipart/form-data">
<input type="file" name="example" />
<input type='submit' value='Upload!' />
</form>
</body>
</html>
خوب فقط سرور رو اجرا کن یک عکس انتخاب کن و آپلود رو بزن
یادت نره فولدر img رو توی روت پروژت بسازی
مشکلی بود باز در خدمتم
موفق باشی
یک دنیا ممنون آقای قربانی عزیز
حل شد، هم روش شماجواب داد هم این بین با multer هم آشنا شدم :)
باورم نمیشه که تونستم یه هفته نشده اولین کار اجرایی با node js انجام بدم
اینو مدیون آموزشای کاربردی شما هستم واقعا ممنون
نظر لطفتونه
انشاالله که همیشه موفق باشید.
سلام در حد پیشنهاد من برای آپلود از این ماژول استفاده کردم که کارش هم خوب بود:
سلام استاد
سال نو مبارک
استاد من می خواهم با برنامه اندروید که نوشتم عکس را به سرورم اپلود کنم خیلی سرچ زدم ولی جوابی که میخواستم را پیدا نکردم
لطفا اگه راهی وجود دارد راهنمایی کنید 🙏🙏