简体   繁体   English

如何从应用程序主捆绑包将pdf和docx文件上传到服务器?

[英]How to upload pdf and docx file to server from app main bundle?

How to upload the docx, pdf file to server from app main bundle? 如何从应用程序主捆绑包将docx,pdf文件上传到服务器?

import UIKit


    class UploadFileController: UIViewController {

        override func viewDidLoad() {
            super.viewDidLoad()


        }

    var path:String!
        func uploadfiletoserver(){
            path = Bundle.main.path(forResource: "mahaligamResume", ofType: "pdf")
            print(path)
            if let url = URL(string: "https://www.happylifeapps.com/webservices/applyforjobs"){
                var request = URLRequest(url: url)
                let boundary:String = "Boundary-\(UUID().uuidString)"
                // let request = NSMutableURLRequest(url:myUrl! as URL);
                request.httpMethod = "POST"
                request.timeoutInterval = 10
                request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")


                var dataFile: Data = Data()
                do{
                    dataFile = try NSData.init(contentsOf: URL(fileURLWithPath: path, isDirectory: true)) as Data
                }catch{
                    print(error)
                }
                if(dataFile==nil)  { return; }
                let postJobData:[String:Any] = ["UserId":"1000","JobId":"jobs_14","ResumeOption":"New","CurrentCTC":"12000","PreferredCTC":"15000","CurrentLocation":"Bangalore","PreferredLocation":"Bangalore","Experience":"0","CCTC_sym":"1000","PCTC_sym":"900"]

                request.httpBody = createBodyWithParameters(parameters: postJobData, filePathKey: "Resume", FileData: dataFile as NSData , boundary: boundary) as Data
                let task = URLSession.shared.dataTask(with: request as URLRequest) {
                    data, response, error in
                    print(data)
                    print(response)

                    if error != nil {
                        print("error=\(error)")
                        return
                    }else if let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue){
                        print("****** response data = \(responseString)")
                        do {
                            let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary
                            print(json)

                            let status = json!["Success"] as! String
                            let errMessage = json!["Message"] as? String
                            DispatchQueue.main.async() {
                                if status == "1"{
                                    print(errMessage)

                                }else{
                                    print(errMessage)
                                }
                            }

                        }catch{
                            print(error)
                        }
                    }

                }; task.resume()
            }
    }
        func createBodyWithParameters(parameters: [String: Any]?, filePathKey: String?, FileData: NSData, boundary: String) -> NSData {

            let body = NSMutableData();

            if parameters != nil {
                for (key, value) in parameters! {
                    body.appendString(string:"--\(boundary)\r\n")
                    body.appendString(string: "Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
                    body.appendString(string: "\(value)\r\n")
                }
            }


            let filename = path
            let mimetype = "pdf/docx"

            body.appendString(string: "--\(boundary)\r\n")
            body.appendString(string: "Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
            body.appendString(string: "Content-Type: \(mimetype)\r\n\r\n")
            body.append(FileData as Data)
            body.appendString(string: "\r\n")
            body.appendString(string: "--\(boundary)--\r\n")

            return body

        }


    }
    extension NSMutableData {

        func appendString(string: String) {
            let data = string.data(using: String.Encoding.utf8, allowLossyConversion: true)
            append(data!)
        }
    }

I tried to upload pdf file to server from my app main bundle . 我尝试将pdf文件从我的应用主捆绑包上传到服务器。 but i did not get any error while uploading , but i am getting error when i am getting response from server like 但是我在上传时没有收到任何错误,但是从服务器收到响应时却出现错误

 Message = "The resume must be a file of type: docx, doc or pdf.";
    Success = 0;

The backend team is stating it's a coding mistake, but I don't know where I am making a mistake. 后端团队指出这是一个编码错误,但我不知道我在哪里出错。 Please help me out with this issue. 请帮我解决这个问题。

PDF:mimetype and filename for pdf file uploading PDF:用于上传pdf文件的MIME类型和文件名

filename = ".pdf" mimetype = "application/pdf" filename =“ .pdf” mimetype =“ application / pdf”

DOCX: mimetype and filename for docx uploading filename = ".docx" mimetype = "application/application/vnd.openxmlformats-officedocument.wordprocessingml.document" DOCX:docx的mimetype和文件名上传filename =“ .docx” mimetype =“ application / application / vnd.openxmlformats-officedocument.wordprocessingml.document”

this is worked for me , 这对我有用

filename and mimetype for doc file to upload to server in native api doc文件的文件名和mimetype以本机api上传到服务器

  func createBodyWithParameters(parameters: [String: Any]?, filePathKey: String?, fileData: NSData, boundary: String) -> NSData {

    let body = NSMutableData();

    if parameters != nil {
        for (key, value) in parameters! {
            body.appendString(string:"--\(boundary)\r\n")
            body.appendString(string: "Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
            body.appendString(string: "\(value)\r\n")
        }
    }

         filename = ".doc"
         mimetype = "application/msword"

    body.appendString(string: "--\(boundary)\r\n")
    body.appendString(string: "Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
    body.appendString(string: "Content-Type: \(mimetype)\r\n\r\n")
    body.append(fileData as Data)
    body.appendString(string: "\r\n")
    body.appendString(string: "--\(boundary)--\r\n")

    return body

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM