-
swift
中的主要代码:
guard let profileImg = self.plusPhotoBtn.imageView?.image else { return }
guard let uploadData = profileImg.jpegData(compressionQuality: 0.3) else { return }
let filename = NSUUID().uuidString
AF.upload(multipartFormData: { multipartFormData in
multipartFormData.append(uploadData, withName: "imgUploader", fileName: "\(filename).jpg", mimeType: "image/jpeg")
}, to: "http://localhost:3000/api/upload")
.uploadProgress { progress in
print(CGFloat(progress.fractionCompleted)*100)
}
.response { response in
if (response.error == nil) {
if (response.data == nil) {
print(response.response?.description)
} else {
print(String(bytes: response.data!, encoding: .utf8))
}
print(response.response?.statusCode)
var responseData: NSData = response.data! as NSData
var len = responseData.length
print("Size: \(len) bytes")
print("response time: \(response.metrics?.taskInterval.duration)")
} else {
print(response.error?.errorDescription)
}
}
-
nodejs
中的主要代码:
var express = require('express');
var router = express.Router();
var multer = require('multer');
var Storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, './public/images');
},
filename: function(req, file, callback) {
callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
}
});
var upload = multer({
storage: Storage
}).single("imgUploader");
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.post("/api/upload", function(req, res) {
upload(req, res, function(err) {
if (err) {
console.log(err);
return res.end("Something went wrong!");
}
return res.end("File uploaded successfully!");
});
});
module.exports = router;
- 注意项:
// swift
multipartFormData.append(uploadData, withName: "imgUploader", fileName: "\(filename).jpg", mimeType: "image/jpeg")
// js
var upload = multer({storage: Storage}).single("imgUploader");
// 以上两处的 'imgUploader' 要对应上
网友评论