mgo를 사용하여 파일을 저장하는 것에 대한 여러 블로그를 읽었지만 특정 요구 사항에 대한 해결책을 찾을 수 없으면 shoutout을 도와주세요! 삽입 아래GoLang mgo를 사용하여 MongoDb에 pdf 저장
가 MongoDB를에 개체 : 파일의 보류를 얻을 수 아래
var dbSchoolPojo dbSchool
i := bson.NewObjectId()
dbSchoolPojo.ID = i
coll := db.C("school")
coll.Insert(&dbSchoolPojo)
:
dbSchoolPojo.pdf = file.Bytes(); //Of course Bytes() is invalid method
: 객체를 삽입하기 전에,
file, handler, err := r.FormFile("pdf") //Able to get file from r *http.Request
지금, 나는 같은 파일 이상으로 설정해야합니다
내 구조체 개체 :
type dbSchool struct {
ID bson.ObjectId `json:"id" bson:"_id,omitempty"`
...
Pdf []byte `json:"pdf" bson:"pdf"`
...
}
평신도의 용어는 질문입니다 : mgo 드라이버를 사용하여 GoLang 구조체를 통해 mongoDb에 파일 (HTML 양식에서받은 파일)을 어떻게 삽입합니까?
읽어 주셔서 감사합니다. :)
업데이트 : 코드 아래
Binary('EWHKDSH876KJHlkjdswsddsfsd3232432njnjkn2dljDSFSDFIJSFD333...')
가 오류없이 작동하지만, PDF 파일을 제공하지 않습니다 :
PDF는 아래와 같이하여 MongoDB에 저장됩니다
func DownloadPdf(w http.ResponseWriter, r *http.Request, db mongoDB) {
var school dbSchool
coll := db.C("schools")
incomingId = "59e6404e2f68182a74610f19"; //This mongo DB _id is received from GET URL request
err := coll.Find(bson.M{"_id": bson.ObjectIdHex(incomingId)}).
Select(bson.M{"pdf": 1}).One(&school)
if err != nil {
serve404(w, r, db)
return
}
buffer := school.Pdf
w.Header().Set("Content-Disposition", "attachment; filename=abc.pdf")
w.Header().Set("Content-Type", "application/pdf")
w.Header().Set("Content-Length", strconv.Itoa(len(buffer)))
if _, err := w.Write(buffer); err != nil {
log.Println("unable to serve image.") //This line is not executed
}
}
JQuery co 드 콘텐츠를 요청합니다 :
$(".downloadPdfFile").click(function() {
var domain = document.location.origin;
window.open(domain+'/brochure/59e6404e2f68182a74610f19', '_blank');
});
안녕하세요 @icza, 작동했습니다! 한가지 더 질문 : 이제 구조체 객체에서 바이트 데이터를 얻었습니다. 다음 단계는이 데이터를 pdf 파일로 변환하고 사용자가 웹 브라우저를 통해 다운로드 할 수있게하는 것입니다. 그걸 도울 수 있니? –
@NikhilJoshi 시작을 위해이 질문을 확인하십시오. [PDF 다운로드가 golang의 서버 측에서 작동하지 않습니다.] (https://stackoverflow.com/questions/41238407/pdf-download-is-not-working-from-serverside-in- 골란). – icza
Hello @icza, 시도했지만 완전히 작동하지 않습니다. 원래 게시물의 UPDATE를 참조하십시오. –