찾다

 >  Q&A  >  본문

android - nodejs 是如何处理post来的图片 使其放入 /public/images 里的?

PHP中文网PHP中文网2812일 전812

모든 응답(6)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-17 16:46:27

    표현

    양식 添加这个:enctype="multipart/form-data"

    <코드>입력(유형="파일")
    

    사용

    var multiparty = require('connect-multiparty')
    var multipartMiddleware = multiparty();

    路由
    app.post('/movie/save',multipartMiddleware,Movie.savePoster,Movie.save)

    <프리><코드> imports.savePoster = function(req, res, next) { var PosterData = req.files.uploadPoster var filePath = 포스터데이터.경로 var originalFilename = 포스터데이터.originalFilename if (원본파일명) { fs.readFile(filePath, function(err, data) { var 타임스탬프 = Date.now() var 유형 = PosterData.type.split('/')[1] var 포스터 = 타임스탬프 + '.' + 유형 **//특정 사용자 정의** var newPath = path.join(__dirname, '../../', '/file/images/' + 포스터) fs.writeFile(newPath, 데이터, 함수(err) { // 사용자 정의 req.poster = 포스터 다음() }) }) } 또 다른 { 다음() } } 最后可以参考:http://www.imooc.com/learn/197中关于上传海报的章节视频,这个是过期的,后面一章有升级적방법

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-17 16:46:27

    node express에는 자동으로 구문 분석하는 업로드 플러그인이 있으므로 디렉토리만 제공하면 되며 매우 간단합니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 16:46:27

    업로드된 이미지를 간단하고 명확하게 분석하려면 formidable을 사용하세요. npm에서 이 모듈의 API를 살펴보세요

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-17 16:46:27

    express는 connect-busboy를 사용하여 이미지 업로드의 multipart/* 데이터를 처리합니다.

    샘플 코드 데모는 다음과 같습니다

    회신하다
    0
  • 阿神

    阿神2017-04-17 16:46:27

    formidable을 사용하는 것이 좋습니다. 지난 며칠간 연습한 결과 formidable의 API 디자인은 더 합리적이고 더 많은 사용자 정의 작업을 용이하게 합니다. 가장 중요한 것은 여러 파일 업로드를 지원한다는 것입니다.
    connect-busboy는 위의 장점이 없으며 멀티파트를 지원하지 않습니다

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 16:46:27

     app.post('/ava',multipart(),function(req, res){
            var filename = req.files.avatar.originalFilename || path.basename(req.files.avatar.path);
            var targetPath = 경로명 + '/image_repository/avatar/' + 파일명;
            fs.createReadStream(req.files.avatar.path).pipe(fs.createWriteStream(targetPath));
            var _url = '/avatar/' + 파일명;
            console.log(_url);
            console.log(targetPath);
            var _name = req.session.user;
            //사용 모듈 방법 保存数据
            User.update({name:_name},{$set:{avatar:_url}},function(err){
                만약 (err) throw err;
    
    
            });
            res.json({
                코드타입 : 200,
                msg:{url:'http://' + req.headers.host + '/' + 파일 이름},
                URL:_url
            });
            //사용 엔터티 방법保存数据,效果상동
            //User.findOne({name:_name},function(err, doc){
            // (err)이면 throw err;
            // if (문서){
            // doc.set({avatar:targetPath});
            // doc.save();
            //    }또 다른{
            // console.log('사용자 없음');
            // }
            //});
            //res.json({
            // 코드 유형 : 200,
            // msg:{url:'http://' + req.headers.host + '/' + 파일 이름},
            // URL:_url
            //});
            //var _img = req.files;
            // console.log(_img);
            //res.json(_img);
        });

    이미지를 이전에 사용하는 양식 데이터를 사용하여 유용한 정보를 확인하세요.

    회신하다
    0
  • 취소회신하다